├── LICENSE ├── README.md ├── Statistics.ipynb ├── img ├── 1.png ├── 2.png ├── 5.png ├── 6.png └── 7.png ├── pcb_def_detTrain.ipynb ├── pcb_web.ipynb └── wu2021.pdf /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Nilutpol Bora 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PCB Defect Detection using YOLO 2 | 3 | ## Introduction 4 | Printed circuit boards (PCBs) are the primary component of any electronic design. Because of this surge in the demand for PCBs in the market, manufacturers are required to produce PCBs in large quantities. Therefore, maintaining the quality of such large numbers of PCBs is challenging. 5 | The main objective is to develop a PCB defect detection model that reduces the false detection rate and increases the production rate.To tackle this, in this project we are going to identify defects in a PCB using YOLO. 6 | You only look once (YOLO) is a state-of-the-art, real-time object detection system that uses algorithm which applies a single neural network to the full image, and then divides the image into regions and predicts bounding boxes and probabilities for each region. 7 | 8 | ## Dataset Used 9 | 10 | - Name: DeepPCB 11 | - Source: https://www.kaggle.com/yidazhang07/bridge-cracks-image?select=DeepPCB 12 | ![Image](./img/1.png) 13 | 14 | 15 | ## Configuring YOLO 16 | We need three configuration files and pretrained convolutional weights (darknet53) to start our training process: 17 | 18 | - custom.data: This file contains information of resource, input and output of training process. 19 | - classes.names: This file contains classes that we plan to train. 20 | - yolov3_custom.cfg: We used the tiny_yolo.cfg and configure it to fit our training requirement. 21 | - darknet53: For training we use convolutional weights that are pre-trained on Imagenet. We use weights from the darknet53 model. 22 | - yolov3_custom.cfg: We used the yolov3.cfg and configure it to fit our training requirement. 23 | These values were configured in accordance with the documentation given for yolov3 to fit our dataset. [https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects] 24 | 25 | ![Image](./img/2.png) 26 | 27 | 28 | ## Training Process 29 | The training process was completed for 12000 iterations and its weights were stored in the drive for predictions. The loss function during the process is as follows: 30 | 31 | ![Image](./img/5.png) 32 | 33 | 34 | ## Results 35 | For a random image from test dataset, the results was as follow: 36 | 37 | ![Image](./img/6.png) 38 | 39 | 40 | ## User Interface 41 | We have implemented a simple web application for our project using pywebIO (which is a Python library that allows you to build simple web applications without the knowledge of HTML and JavaScript) to demonstrate our project. 42 | 43 | ![Image](./img/7.png) 44 | 45 | 46 | -------------------------------------------------------------------------------- /Statistics.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import os" 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 2, 15 | "metadata": {}, 16 | "outputs": [ 17 | { 18 | "name": "stdout", 19 | "output_type": "stream", 20 | "text": [ 21 | "00041000.txt\n", 22 | "00041001.txt\n", 23 | "00041002.txt\n", 24 | "00041003.txt\n", 25 | "00041004.txt\n", 26 | "00041005.txt\n", 27 | "00041006.txt\n", 28 | "00041007.txt\n", 29 | "00041008.txt\n", 30 | "00041009.txt\n", 31 | "00041010.txt\n", 32 | "00041011.txt\n", 33 | "00041012.txt\n", 34 | "00041013.txt\n", 35 | "00041014.txt\n", 36 | "00041015.txt\n", 37 | "00041016.txt\n", 38 | "00041017.txt\n", 39 | "00041018.txt\n", 40 | "00041019.txt\n", 41 | "00041020.txt\n", 42 | "00041021.txt\n", 43 | "00041022.txt\n", 44 | "00041023.txt\n", 45 | "00041024.txt\n", 46 | "00041025.txt\n", 47 | "00041026.txt\n", 48 | "00041027.txt\n", 49 | "00041028.txt\n", 50 | "00041029.txt\n", 51 | "00041030.txt\n", 52 | "00041031.txt\n", 53 | "00041032.txt\n", 54 | "00041033.txt\n", 55 | "00041034.txt\n", 56 | "00041035.txt\n", 57 | "00041036.txt\n", 58 | "00041037.txt\n", 59 | "00041038.txt\n", 60 | "00041039.txt\n", 61 | "00041040.txt\n", 62 | "00041041.txt\n", 63 | "00041042.txt\n", 64 | "00041043.txt\n", 65 | "00041044.txt\n", 66 | "00041045.txt\n", 67 | "00041046.txt\n", 68 | "00041047.txt\n", 69 | "00041048.txt\n", 70 | "00041049.txt\n", 71 | "00041050.txt\n", 72 | "00041051.txt\n", 73 | "00041052.txt\n", 74 | "00041053.txt\n", 75 | "00041054.txt\n", 76 | "00041055.txt\n", 77 | "00041056.txt\n", 78 | "00041057.txt\n", 79 | "00041058.txt\n", 80 | "00041059.txt\n", 81 | "00041060.txt\n", 82 | "00041061.txt\n", 83 | "00041062.txt\n", 84 | "00041063.txt\n", 85 | "00041064.txt\n", 86 | "00041065.txt\n", 87 | "00041066.txt\n", 88 | "00041067.txt\n", 89 | "00041068.txt\n", 90 | "00041069.txt\n", 91 | "00041070.txt\n", 92 | "00041071.txt\n", 93 | "00041072.txt\n", 94 | "00041073.txt\n", 95 | "00041074.txt\n", 96 | "00041075.txt\n", 97 | "00041076.txt\n", 98 | "00041077.txt\n", 99 | "00041078.txt\n", 100 | "00041079.txt\n", 101 | "00041080.txt\n", 102 | "00041081.txt\n", 103 | "00041082.txt\n", 104 | "00041083.txt\n", 105 | "00041084.txt\n", 106 | "00041085.txt\n", 107 | "00041086.txt\n", 108 | "00041087.txt\n", 109 | "00041088.txt\n", 110 | "00041089.txt\n", 111 | "00041090.txt\n", 112 | "00041091.txt\n", 113 | "00041092.txt\n", 114 | "00041093.txt\n", 115 | "00041094.txt\n", 116 | "00041095.txt\n", 117 | "00041096.txt\n", 118 | "00041097.txt\n", 119 | "00041098.txt\n", 120 | "00041099.txt\n", 121 | "00041100.txt\n", 122 | "00041101.txt\n", 123 | "00041102.txt\n", 124 | "00041103.txt\n", 125 | "00041104.txt\n", 126 | "00041105.txt\n", 127 | "00041106.txt\n", 128 | "00041107.txt\n", 129 | "00041108.txt\n", 130 | "00041109.txt\n", 131 | "00041110.txt\n", 132 | "00041111.txt\n", 133 | "00041112.txt\n", 134 | "00041113.txt\n", 135 | "00041114.txt\n", 136 | "00041115.txt\n", 137 | "00041116.txt\n", 138 | "00041117.txt\n", 139 | "00041118.txt\n", 140 | "00041119.txt\n", 141 | "00041120.txt\n", 142 | "00041121.txt\n", 143 | "00041122.txt\n", 144 | "00041123.txt\n", 145 | "00041124.txt\n", 146 | "00041125.txt\n", 147 | "00041126.txt\n", 148 | "00041127.txt\n", 149 | "00041128.txt\n", 150 | "00041129.txt\n", 151 | "00041130.txt\n", 152 | "00041131.txt\n", 153 | "00041132.txt\n", 154 | "00041133.txt\n", 155 | "00041134.txt\n", 156 | "00041135.txt\n", 157 | "00041136.txt\n", 158 | "00041137.txt\n", 159 | "00041138.txt\n", 160 | "00041139.txt\n", 161 | "00041140.txt\n", 162 | "00041141.txt\n", 163 | "00041142.txt\n", 164 | "00041143.txt\n", 165 | "00041144.txt\n", 166 | "00041145.txt\n", 167 | "00041146.txt\n", 168 | "00041147.txt\n", 169 | "00041148.txt\n", 170 | "00041149.txt\n", 171 | "00041150.txt\n", 172 | "00041151.txt\n", 173 | "00041152.txt\n", 174 | "00041153.txt\n", 175 | "00041154.txt\n", 176 | "00041155.txt\n", 177 | "00041156.txt\n", 178 | "00041157.txt\n", 179 | "00041158.txt\n", 180 | "00041159.txt\n", 181 | "00041160.txt\n", 182 | "00041161.txt\n", 183 | "00041162.txt\n", 184 | "00041163.txt\n", 185 | "00041164.txt\n", 186 | "00041165.txt\n", 187 | "00041166.txt\n", 188 | "00041167.txt\n", 189 | "00041168.txt\n", 190 | "00041169.txt\n", 191 | "00041170.txt\n", 192 | "00041171.txt\n", 193 | "00041172.txt\n", 194 | "00041173.txt\n", 195 | "00041174.txt\n", 196 | "00041175.txt\n", 197 | "00041176.txt\n", 198 | "00041177.txt\n", 199 | "00041178.txt\n", 200 | "00041179.txt\n", 201 | "00041180.txt\n", 202 | "00041181.txt\n", 203 | "00041182.txt\n", 204 | "00041183.txt\n", 205 | "00041184.txt\n", 206 | "00041185.txt\n", 207 | "00041186.txt\n", 208 | "00041187.txt\n", 209 | "00041188.txt\n", 210 | "00041189.txt\n", 211 | "00041190.txt\n", 212 | "00041191.txt\n", 213 | "00041192.txt\n", 214 | "00041193.txt\n", 215 | "00041194.txt\n", 216 | "00041195.txt\n", 217 | "00041196.txt\n", 218 | "00041197.txt\n", 219 | "00041198.txt\n", 220 | "00041199.txt\n", 221 | "00041200.txt\n", 222 | "00041201.txt\n", 223 | "00041202.txt\n", 224 | "00041203.txt\n", 225 | "00041204.txt\n", 226 | "00041205.txt\n", 227 | "00041206.txt\n", 228 | "00041207.txt\n", 229 | "00041208.txt\n", 230 | "00041209.txt\n", 231 | "00041210.txt\n", 232 | "00041211.txt\n", 233 | "00041212.txt\n", 234 | "00041213.txt\n", 235 | "00041214.txt\n", 236 | "00041215.txt\n", 237 | "00041216.txt\n", 238 | "00041217.txt\n", 239 | "00041218.txt\n", 240 | "00041219.txt\n", 241 | "00041220.txt\n", 242 | "12000001.txt\n", 243 | "12000017.txt\n", 244 | "12000038.txt\n", 245 | "12000052.txt\n", 246 | "12000068.txt\n", 247 | "12000085.txt\n", 248 | "12000102.txt\n", 249 | "12000119.txt\n", 250 | "12000136.txt\n", 251 | "12000155.txt\n", 252 | "12000171.txt\n", 253 | "12000187.txt\n", 254 | "12000204.txt\n", 255 | "12000593.txt\n", 256 | "12100000.txt\n", 257 | "12100001.txt\n", 258 | "12100002.txt\n", 259 | "12100003.txt\n", 260 | "12100004.txt\n", 261 | "12100005.txt\n", 262 | "12100006.txt\n", 263 | "12100007.txt\n", 264 | "12100008.txt\n", 265 | "12100009.txt\n", 266 | "12100010.txt\n", 267 | "12100011.txt\n", 268 | "12100012.txt\n", 269 | "12100013.txt\n", 270 | "12100014.txt\n", 271 | "12100015.txt\n", 272 | "12100016.txt\n", 273 | "12100017.txt\n", 274 | "12100018.txt\n", 275 | "12100019.txt\n", 276 | "12100020.txt\n", 277 | "12100021.txt\n", 278 | "12100022.txt\n", 279 | "12100023.txt\n", 280 | "12100024.txt\n", 281 | "12100025.txt\n", 282 | "12100026.txt\n", 283 | "12100027.txt\n", 284 | "12100028.txt\n", 285 | "12100029.txt\n", 286 | "12100030.txt\n", 287 | "12100031.txt\n", 288 | "12100032.txt\n", 289 | "12100033.txt\n", 290 | "12100034.txt\n", 291 | "12100035.txt\n", 292 | "12100036.txt\n", 293 | "12100037.txt\n", 294 | "12100038.txt\n", 295 | "12100039.txt\n", 296 | "12100040.txt\n", 297 | "12100041.txt\n", 298 | "12100042.txt\n", 299 | "12100043.txt\n", 300 | "12100044.txt\n", 301 | "12100045.txt\n", 302 | "12100046.txt\n", 303 | "12100047.txt\n", 304 | "12100048.txt\n", 305 | "12100049.txt\n", 306 | "12100050.txt\n", 307 | "12100051.txt\n", 308 | "12100052.txt\n", 309 | "12100053.txt\n", 310 | "12100054.txt\n", 311 | "12100055.txt\n", 312 | "12100056.txt\n", 313 | "12100057.txt\n", 314 | "12100058.txt\n", 315 | "12100059.txt\n", 316 | "12100060.txt\n", 317 | "12100061.txt\n", 318 | "12100062.txt\n", 319 | "12100063.txt\n", 320 | "12100064.txt\n", 321 | "12100065.txt\n", 322 | "12100121.txt\n", 323 | "12100122.txt\n", 324 | "12100123.txt\n", 325 | "12100124.txt\n", 326 | "12100125.txt\n", 327 | "12100126.txt\n", 328 | "12100127.txt\n", 329 | "12100128.txt\n", 330 | "12100129.txt\n", 331 | "12100130.txt\n", 332 | "12100131.txt\n", 333 | "12100132.txt\n", 334 | "12100133.txt\n", 335 | "12100134.txt\n", 336 | "12100135.txt\n", 337 | "12100136.txt\n", 338 | "12100137.txt\n", 339 | "12100138.txt\n", 340 | "12100139.txt\n", 341 | "12100140.txt\n", 342 | "12100141.txt\n", 343 | "12100142.txt\n", 344 | "12100143.txt\n", 345 | "12100144.txt\n", 346 | "12100145.txt\n", 347 | "12100146.txt\n", 348 | "12100147.txt\n", 349 | "12100148.txt\n", 350 | "12100149.txt\n", 351 | "12100150.txt\n", 352 | "12100151.txt\n", 353 | "12100152.txt\n", 354 | "12100153.txt\n", 355 | "12100154.txt\n", 356 | "12100155.txt\n", 357 | "12100156.txt\n", 358 | "12100157.txt\n", 359 | "12100158.txt\n", 360 | "12100159.txt\n", 361 | "12100160.txt\n", 362 | "12100161.txt\n", 363 | "12100162.txt\n", 364 | "12100163.txt\n", 365 | "12100164.txt\n", 366 | "12100165.txt\n", 367 | "12100166.txt\n", 368 | "12100167.txt\n", 369 | "12100168.txt\n", 370 | "12100169.txt\n", 371 | "12100170.txt\n", 372 | "12100171.txt\n", 373 | "12100172.txt\n", 374 | "12100173.txt\n", 375 | "12100174.txt\n", 376 | "12100175.txt\n", 377 | "12100176.txt\n", 378 | "12100177.txt\n", 379 | "12100178.txt\n", 380 | "12100179.txt\n", 381 | "12100180.txt\n", 382 | "12100181.txt\n", 383 | "12100182.txt\n", 384 | "12100183.txt\n", 385 | "12100184.txt\n", 386 | "12100185.txt\n", 387 | "12100186.txt\n", 388 | "12100187.txt\n", 389 | "12100188.txt\n", 390 | "12100189.txt\n", 391 | "12100190.txt\n", 392 | "12100191.txt\n", 393 | "12100192.txt\n", 394 | "12100193.txt\n", 395 | "12100194.txt\n", 396 | "12100195.txt\n", 397 | "12100196.txt\n", 398 | "12100197.txt\n", 399 | "12100198.txt\n", 400 | "12100199.txt\n", 401 | "12100200.txt\n", 402 | "12300060.txt\n", 403 | "12300061.txt\n", 404 | "12300062.txt\n", 405 | "12300063.txt\n", 406 | "12300064.txt\n", 407 | "12300065.txt\n", 408 | "12300066.txt\n", 409 | "12300067.txt\n", 410 | "12300068.txt\n", 411 | "12300069.txt\n", 412 | "12300070.txt\n", 413 | "12300071.txt\n", 414 | "12300072.txt\n", 415 | "12300073.txt\n", 416 | "12300074.txt\n", 417 | "12300075.txt\n", 418 | "12300076.txt\n", 419 | "12300077.txt\n", 420 | "12300108.txt\n", 421 | "12300109.txt\n", 422 | "12300110.txt\n", 423 | "12300111.txt\n", 424 | "12300112.txt\n", 425 | "12300113.txt\n", 426 | "12300114.txt\n", 427 | "12300115.txt\n", 428 | "12300116.txt\n", 429 | "12300117.txt\n", 430 | "12300118.txt\n", 431 | "12300119.txt\n", 432 | "12300120.txt\n", 433 | "12300121.txt\n", 434 | "12300122.txt\n", 435 | "12300123.txt\n", 436 | "12300124.txt\n", 437 | "12300125.txt\n", 438 | "12300126.txt\n", 439 | "12300127.txt\n", 440 | "12300128.txt\n", 441 | "12300129.txt\n", 442 | "12300130.txt\n", 443 | "12300131.txt\n", 444 | "12300132.txt\n", 445 | "12300133.txt\n", 446 | "12300134.txt\n", 447 | "12300135.txt\n", 448 | "12300136.txt\n", 449 | "12300137.txt\n", 450 | "12300138.txt\n", 451 | "12300139.txt\n", 452 | "12300140.txt\n", 453 | "12300141.txt\n", 454 | "12300142.txt\n", 455 | "12300144.txt\n", 456 | "12300145.txt\n", 457 | "12300146.txt\n", 458 | "12300147.txt\n", 459 | "12300148.txt\n", 460 | "12300149.txt\n", 461 | "12300150.txt\n", 462 | "12300151.txt\n", 463 | "12300152.txt\n", 464 | "12300153.txt\n", 465 | "12300154.txt\n", 466 | "12300155.txt\n", 467 | "12300156.txt\n", 468 | "12300216.txt\n", 469 | "12300217.txt\n", 470 | "12300218.txt\n", 471 | "12300219.txt\n", 472 | "12300220.txt\n", 473 | "12300221.txt\n", 474 | "12300222.txt\n", 475 | "12300223.txt\n", 476 | "12300224.txt\n", 477 | "12300225.txt\n", 478 | "12300226.txt\n", 479 | "12300227.txt\n", 480 | "12300228.txt\n", 481 | "12300229.txt\n", 482 | "12300230.txt\n", 483 | "12300231.txt\n", 484 | "12300232.txt\n", 485 | "12300234.txt\n", 486 | "12300235.txt\n", 487 | "12300236.txt\n", 488 | "12300237.txt\n", 489 | "12300238.txt\n", 490 | "12300239.txt\n", 491 | "12300240.txt\n", 492 | "12300241.txt\n", 493 | "12300242.txt\n", 494 | "12300243.txt\n", 495 | "12300244.txt\n", 496 | "12300245.txt\n", 497 | "12300246.txt\n", 498 | "12300247.txt\n", 499 | "12300248.txt\n", 500 | "13000000.txt\n", 501 | "13000001.txt\n", 502 | "13000002.txt\n", 503 | "13000003.txt\n", 504 | "13000004.txt\n", 505 | "13000005.txt\n", 506 | "13000006.txt\n", 507 | "13000007.txt\n", 508 | "13000008.txt\n", 509 | "13000009.txt\n", 510 | "13000010.txt\n", 511 | "13000011.txt\n", 512 | "13000012.txt\n", 513 | "13000013.txt\n", 514 | "13000014.txt\n", 515 | "13000015.txt\n", 516 | "13000016.txt\n", 517 | "13000017.txt\n", 518 | "13000018.txt\n", 519 | "13000019.txt\n", 520 | "13000020.txt\n", 521 | "13000021.txt\n", 522 | "13000022.txt\n", 523 | "13000023.txt\n", 524 | "13000024.txt\n", 525 | "13000025.txt\n", 526 | "13000026.txt\n", 527 | "13000027.txt\n", 528 | "13000028.txt\n", 529 | "13000029.txt\n", 530 | "13000030.txt\n", 531 | "13000031.txt\n", 532 | "13000032.txt\n", 533 | "13000033.txt\n", 534 | "13000034.txt\n", 535 | "13000035.txt\n", 536 | "13000036.txt\n", 537 | "13000037.txt\n", 538 | "13000038.txt\n", 539 | "13000039.txt\n", 540 | "13000040.txt\n", 541 | "13000041.txt\n", 542 | "13000042.txt\n", 543 | "13000043.txt\n", 544 | "13000044.txt\n", 545 | "13000045.txt\n", 546 | "13000046.txt\n", 547 | "13000047.txt\n", 548 | "13000048.txt\n", 549 | "13000049.txt\n", 550 | "13000050.txt\n", 551 | "13000051.txt\n", 552 | "13000052.txt\n", 553 | "13000053.txt\n", 554 | "13000054.txt\n", 555 | "13000055.txt\n", 556 | "13000056.txt\n", 557 | "13000057.txt\n", 558 | "13000058.txt\n", 559 | "13000059.txt\n", 560 | "13000060.txt\n", 561 | "13000061.txt\n", 562 | "13000062.txt\n", 563 | "13000063.txt\n", 564 | "13000064.txt\n", 565 | "13000065.txt\n", 566 | "13000066.txt\n", 567 | "13000067.txt\n", 568 | "13000068.txt\n", 569 | "13000069.txt\n", 570 | "13000070.txt\n", 571 | "13000071.txt\n", 572 | "13000072.txt\n", 573 | "13000073.txt\n", 574 | "13000074.txt\n", 575 | "13000075.txt\n", 576 | "13000076.txt\n", 577 | "13000077.txt\n", 578 | "13000078.txt\n", 579 | "13000079.txt\n", 580 | "13000080.txt\n", 581 | "13000081.txt\n", 582 | "13000082.txt\n", 583 | "13000083.txt\n", 584 | "13000084.txt\n", 585 | "13000085.txt\n", 586 | "13000086.txt\n", 587 | "13000087.txt\n", 588 | "13000088.txt\n", 589 | "13000089.txt\n", 590 | "13000090.txt\n", 591 | "13000091.txt\n", 592 | "13000092.txt\n", 593 | "13000093.txt\n", 594 | "13000094.txt\n", 595 | "13000095.txt\n", 596 | "13000096.txt\n", 597 | "13000097.txt\n", 598 | "13000098.txt\n", 599 | "13000099.txt\n", 600 | "13000100.txt\n", 601 | "13000101.txt\n", 602 | "13000102.txt\n", 603 | "13000103.txt\n", 604 | "13000104.txt\n", 605 | "13000105.txt\n", 606 | "13000106.txt\n", 607 | "13000107.txt\n", 608 | "13000108.txt\n", 609 | "13000109.txt\n", 610 | "13000110.txt\n", 611 | "13000111.txt\n", 612 | "13000112.txt\n", 613 | "13000113.txt\n", 614 | "13000114.txt\n", 615 | "13000115.txt\n", 616 | "13000116.txt\n", 617 | "13000117.txt\n", 618 | "13000118.txt\n", 619 | "13000119.txt\n", 620 | "13000120.txt\n", 621 | "13000121.txt\n", 622 | "13000122.txt\n", 623 | "13000123.txt\n", 624 | "13000124.txt\n", 625 | "13000125.txt\n", 626 | "13000126.txt\n", 627 | "13000127.txt\n", 628 | "13000128.txt\n", 629 | "13000129.txt\n", 630 | "13000130.txt\n", 631 | "13000131.txt\n", 632 | "13000132.txt\n", 633 | "13000133.txt\n", 634 | "13000134.txt\n", 635 | "13000135.txt\n", 636 | "13000136.txt\n", 637 | "13000137.txt\n", 638 | "13000138.txt\n", 639 | "13000139.txt\n", 640 | "13000140.txt\n", 641 | "13000141.txt\n", 642 | "13000142.txt\n", 643 | "13000143.txt\n", 644 | "13000144.txt\n", 645 | "13000145.txt\n", 646 | "13000146.txt\n", 647 | "13000147.txt\n", 648 | "13000148.txt\n", 649 | "13000149.txt\n", 650 | "13000150.txt\n", 651 | "13000151.txt\n", 652 | "13000152.txt\n", 653 | "13000153.txt\n", 654 | "13000154.txt\n", 655 | "13000155.txt\n", 656 | "13000156.txt\n", 657 | "13000157.txt\n", 658 | "13000158.txt\n", 659 | "13000159.txt\n", 660 | "13000160.txt\n", 661 | "13000161.txt\n", 662 | "13000162.txt\n", 663 | "13000163.txt\n", 664 | "13000164.txt\n", 665 | "13000165.txt\n", 666 | "13000166.txt\n", 667 | "13000167.txt\n", 668 | "13000168.txt\n", 669 | "13000169.txt\n", 670 | "13000170.txt\n", 671 | "13000171.txt\n", 672 | "13000172.txt\n", 673 | "13000173.txt\n", 674 | "13000174.txt\n", 675 | "13000175.txt\n", 676 | "13000176.txt\n", 677 | "13000177.txt\n", 678 | "13000178.txt\n", 679 | "13000179.txt\n", 680 | "13000180.txt\n", 681 | "13000181.txt\n", 682 | "13000182.txt\n", 683 | "13000183.txt\n", 684 | "13000184.txt\n", 685 | "13000185.txt\n", 686 | "13000186.txt\n", 687 | "13000187.txt\n", 688 | "13000188.txt\n", 689 | "13000189.txt\n", 690 | "13000190.txt\n", 691 | "13000191.txt\n", 692 | "13000192.txt\n", 693 | "13000193.txt\n", 694 | "13000194.txt\n", 695 | "13000195.txt\n", 696 | "13000196.txt\n", 697 | "13000197.txt\n", 698 | "13000198.txt\n", 699 | "13000199.txt\n", 700 | "13000200.txt\n", 701 | "13000201.txt\n", 702 | "13000202.txt\n", 703 | "13000203.txt\n", 704 | "13000204.txt\n", 705 | "13000205.txt\n", 706 | "13000206.txt\n", 707 | "13000207.txt\n", 708 | "13000208.txt\n", 709 | "13000209.txt\n", 710 | "13000210.txt\n", 711 | "13000211.txt\n", 712 | "13000212.txt\n", 713 | "13000213.txt\n", 714 | "13000214.txt\n", 715 | "13000215.txt\n", 716 | "20085000.txt\n", 717 | "20085001.txt\n", 718 | "20085002.txt\n", 719 | "20085003.txt\n", 720 | "20085004.txt\n" 721 | ] 722 | }, 723 | { 724 | "name": "stdout", 725 | "output_type": "stream", 726 | "text": [ 727 | "20085005.txt\n", 728 | "20085006.txt\n", 729 | "20085007.txt\n", 730 | "20085008.txt\n", 731 | "20085009.txt\n", 732 | "20085010.txt\n", 733 | "20085011.txt\n", 734 | "20085012.txt\n", 735 | "20085013.txt\n", 736 | "20085014.txt\n", 737 | "20085015.txt\n", 738 | "20085016.txt\n", 739 | "20085017.txt\n", 740 | "20085018.txt\n", 741 | "20085019.txt\n", 742 | "20085020.txt\n", 743 | "20085021.txt\n", 744 | "20085022.txt\n", 745 | "20085023.txt\n", 746 | "20085024.txt\n", 747 | "20085025.txt\n", 748 | "20085026.txt\n", 749 | "20085027.txt\n", 750 | "20085028.txt\n", 751 | "20085029.txt\n", 752 | "20085030.txt\n", 753 | "20085031.txt\n", 754 | "20085032.txt\n", 755 | "20085033.txt\n", 756 | "20085034.txt\n", 757 | "20085035.txt\n", 758 | "20085036.txt\n", 759 | "20085037.txt\n", 760 | "20085038.txt\n", 761 | "20085039.txt\n", 762 | "20085040.txt\n", 763 | "20085041.txt\n", 764 | "20085042.txt\n", 765 | "20085043.txt\n", 766 | "20085044.txt\n", 767 | "20085045.txt\n", 768 | "20085046.txt\n", 769 | "20085047.txt\n", 770 | "20085048.txt\n", 771 | "20085049.txt\n", 772 | "20085050.txt\n", 773 | "20085051.txt\n", 774 | "20085052.txt\n", 775 | "20085053.txt\n", 776 | "20085054.txt\n", 777 | "20085055.txt\n", 778 | "20085056.txt\n", 779 | "20085057.txt\n", 780 | "20085058.txt\n", 781 | "20085059.txt\n", 782 | "20085060.txt\n", 783 | "20085061.txt\n", 784 | "20085062.txt\n", 785 | "20085063.txt\n", 786 | "20085064.txt\n", 787 | "20085065.txt\n", 788 | "20085066.txt\n", 789 | "20085067.txt\n", 790 | "20085068.txt\n", 791 | "20085069.txt\n", 792 | "20085070.txt\n", 793 | "20085071.txt\n", 794 | "20085072.txt\n", 795 | "20085073.txt\n", 796 | "20085074.txt\n", 797 | "20085075.txt\n", 798 | "20085076.txt\n", 799 | "20085077.txt\n", 800 | "20085078.txt\n", 801 | "20085079.txt\n", 802 | "20085080.txt\n", 803 | "20085081.txt\n", 804 | "20085082.txt\n", 805 | "20085083.txt\n", 806 | "20085084.txt\n", 807 | "20085085.txt\n", 808 | "20085086.txt\n", 809 | "20085087.txt\n", 810 | "20085088.txt\n", 811 | "20085089.txt\n", 812 | "20085090.txt\n", 813 | "20085091.txt\n", 814 | "20085092.txt\n", 815 | "20085093.txt\n", 816 | "20085094.txt\n", 817 | "20085095.txt\n", 818 | "20085096.txt\n", 819 | "20085097.txt\n", 820 | "20085098.txt\n", 821 | "20085099.txt\n", 822 | "20085100.txt\n", 823 | "20085101.txt\n", 824 | "20085102.txt\n", 825 | "20085103.txt\n", 826 | "20085104.txt\n", 827 | "20085105.txt\n", 828 | "20085106.txt\n", 829 | "20085107.txt\n", 830 | "20085108.txt\n", 831 | "20085109.txt\n", 832 | "20085110.txt\n", 833 | "20085111.txt\n", 834 | "20085112.txt\n", 835 | "20085113.txt\n", 836 | "20085114.txt\n", 837 | "20085115.txt\n", 838 | "20085116.txt\n", 839 | "20085117.txt\n", 840 | "20085118.txt\n", 841 | "20085119.txt\n", 842 | "20085120.txt\n", 843 | "20085121.txt\n", 844 | "20085122.txt\n", 845 | "20085123.txt\n", 846 | "20085124.txt\n", 847 | "20085125.txt\n", 848 | "20085126.txt\n", 849 | "20085127.txt\n", 850 | "20085128.txt\n", 851 | "20085129.txt\n", 852 | "20085130.txt\n", 853 | "20085131.txt\n", 854 | "20085132.txt\n", 855 | "20085133.txt\n", 856 | "20085134.txt\n", 857 | "20085135.txt\n", 858 | "20085136.txt\n", 859 | "20085137.txt\n", 860 | "20085138.txt\n", 861 | "20085139.txt\n", 862 | "20085140.txt\n", 863 | "20085141.txt\n", 864 | "20085142.txt\n", 865 | "20085143.txt\n", 866 | "20085144.txt\n", 867 | "20085145.txt\n", 868 | "20085146.txt\n", 869 | "20085147.txt\n", 870 | "20085148.txt\n", 871 | "20085149.txt\n", 872 | "20085150.txt\n", 873 | "20085151.txt\n", 874 | "20085152.txt\n", 875 | "20085153.txt\n", 876 | "20085154.txt\n", 877 | "20085155.txt\n", 878 | "20085156.txt\n", 879 | "20085157.txt\n", 880 | "20085158.txt\n", 881 | "20085159.txt\n", 882 | "20085160.txt\n", 883 | "20085161.txt\n", 884 | "20085162.txt\n", 885 | "20085163.txt\n", 886 | "20085164.txt\n", 887 | "20085165.txt\n", 888 | "20085166.txt\n", 889 | "20085167.txt\n", 890 | "20085168.txt\n", 891 | "20085169.txt\n", 892 | "20085170.txt\n", 893 | "20085171.txt\n", 894 | "20085172.txt\n", 895 | "20085173.txt\n", 896 | "20085174.txt\n", 897 | "20085175.txt\n", 898 | "20085176.txt\n", 899 | "20085177.txt\n", 900 | "20085178.txt\n", 901 | "20085179.txt\n", 902 | "20085180.txt\n", 903 | "20085181.txt\n", 904 | "20085182.txt\n", 905 | "20085183.txt\n", 906 | "20085184.txt\n", 907 | "20085185.txt\n", 908 | "20085186.txt\n", 909 | "20085187.txt\n", 910 | "20085188.txt\n", 911 | "20085189.txt\n", 912 | "20085190.txt\n", 913 | "20085191.txt\n", 914 | "20085192.txt\n", 915 | "20085193.txt\n", 916 | "20085194.txt\n", 917 | "20085195.txt\n", 918 | "20085196.txt\n", 919 | "20085197.txt\n", 920 | "20085198.txt\n", 921 | "20085199.txt\n", 922 | "20085200.txt\n", 923 | "20085201.txt\n", 924 | "20085202.txt\n", 925 | "20085203.txt\n", 926 | "20085204.txt\n", 927 | "20085205.txt\n", 928 | "20085206.txt\n", 929 | "20085207.txt\n", 930 | "20085208.txt\n", 931 | "20085209.txt\n", 932 | "20085210.txt\n", 933 | "20085211.txt\n", 934 | "20085212.txt\n", 935 | "20085213.txt\n", 936 | "20085214.txt\n", 937 | "20085215.txt\n", 938 | "20085216.txt\n", 939 | "20085217.txt\n", 940 | "20085218.txt\n", 941 | "20085219.txt\n", 942 | "20085220.txt\n", 943 | "20085221.txt\n", 944 | "20085222.txt\n", 945 | "20085223.txt\n", 946 | "20085224.txt\n", 947 | "20085225.txt\n", 948 | "20085226.txt\n", 949 | "20085227.txt\n", 950 | "20085228.txt\n", 951 | "20085229.txt\n", 952 | "20085230.txt\n", 953 | "20085231.txt\n", 954 | "20085232.txt\n", 955 | "20085233.txt\n", 956 | "20085234.txt\n", 957 | "20085235.txt\n", 958 | "20085236.txt\n", 959 | "20085237.txt\n", 960 | "20085238.txt\n", 961 | "20085239.txt\n", 962 | "20085240.txt\n", 963 | "20085241.txt\n", 964 | "20085242.txt\n", 965 | "20085243.txt\n", 966 | "20085244.txt\n", 967 | "20085245.txt\n", 968 | "20085246.txt\n", 969 | "20085247.txt\n", 970 | "20085248.txt\n", 971 | "20085249.txt\n", 972 | "20085250.txt\n", 973 | "20085251.txt\n", 974 | "20085252.txt\n", 975 | "20085253.txt\n", 976 | "20085254.txt\n", 977 | "20085255.txt\n", 978 | "20085256.txt\n", 979 | "20085257.txt\n", 980 | "20085258.txt\n", 981 | "20085259.txt\n", 982 | "20085260.txt\n", 983 | "20085261.txt\n", 984 | "20085262.txt\n", 985 | "20085263.txt\n", 986 | "20085264.txt\n", 987 | "20085265.txt\n", 988 | "20085266.txt\n", 989 | "20085267.txt\n", 990 | "20085268.txt\n", 991 | "20085269.txt\n", 992 | "20085270.txt\n", 993 | "20085271.txt\n", 994 | "20085272.txt\n", 995 | "20085273.txt\n", 996 | "20085274.txt\n", 997 | "20085275.txt\n", 998 | "20085276.txt\n", 999 | "20085277.txt\n", 1000 | "20085278.txt\n", 1001 | "20085279.txt\n", 1002 | "20085280.txt\n", 1003 | "20085281.txt\n", 1004 | "20085282.txt\n", 1005 | "20085283.txt\n", 1006 | "20085284.txt\n", 1007 | "20085285.txt\n", 1008 | "20085286.txt\n", 1009 | "20085287.txt\n", 1010 | "20085288.txt\n", 1011 | "20085289.txt\n", 1012 | "20085290.txt\n", 1013 | "20085291.txt\n", 1014 | "20085292.txt\n", 1015 | "20085293.txt\n", 1016 | "20085294.txt\n", 1017 | "20085295.txt\n", 1018 | "20085296.txt\n", 1019 | "20085297.txt\n", 1020 | "20085298.txt\n", 1021 | "20085299.txt\n", 1022 | "20085300.txt\n", 1023 | "20085301.txt\n", 1024 | "20085302.txt\n", 1025 | "20085303.txt\n", 1026 | "20085304.txt\n", 1027 | "20085305.txt\n", 1028 | "20085306.txt\n", 1029 | "20085307.txt\n", 1030 | "20085308.txt\n", 1031 | "20085309.txt\n", 1032 | "20085310.txt\n", 1033 | "20085311.txt\n", 1034 | "20085312.txt\n", 1035 | "20085313.txt\n", 1036 | "20085314.txt\n", 1037 | "20085315.txt\n", 1038 | "20085316.txt\n", 1039 | "20085317.txt\n", 1040 | "20085318.txt\n", 1041 | "20085319.txt\n", 1042 | "20085320.txt\n", 1043 | "20085321.txt\n", 1044 | "20085322.txt\n", 1045 | "20085323.txt\n", 1046 | "20085324.txt\n", 1047 | "44000011.txt\n", 1048 | "44000012.txt\n", 1049 | "44000013.txt\n", 1050 | "44000014.txt\n", 1051 | "44000015.txt\n", 1052 | "44000016.txt\n", 1053 | "44000017.txt\n", 1054 | "44000018.txt\n", 1055 | "44000019.txt\n", 1056 | "44000020.txt\n", 1057 | "44000021.txt\n", 1058 | "44000022.txt\n", 1059 | "44000023.txt\n", 1060 | "44000024.txt\n", 1061 | "44000025.txt\n", 1062 | "44000026.txt\n", 1063 | "44000027.txt\n", 1064 | "44000028.txt\n", 1065 | "44000029.txt\n", 1066 | "44000030.txt\n", 1067 | "44000031.txt\n", 1068 | "44000032.txt\n", 1069 | "44000033.txt\n", 1070 | "44000034.txt\n", 1071 | "44000036.txt\n", 1072 | "44000037.txt\n", 1073 | "44000038.txt\n", 1074 | "44000039.txt\n", 1075 | "44000040.txt\n", 1076 | "44000041.txt\n", 1077 | "44000042.txt\n", 1078 | "44000043.txt\n", 1079 | "44000044.txt\n", 1080 | "44000045.txt\n", 1081 | "44000046.txt\n", 1082 | "44000047.txt\n", 1083 | "44000048.txt\n", 1084 | "44000049.txt\n", 1085 | "44000050.txt\n", 1086 | "44000051.txt\n", 1087 | "44000052.txt\n", 1088 | "44000053.txt\n", 1089 | "44000054.txt\n", 1090 | "44000055.txt\n", 1091 | "44000056.txt\n", 1092 | "44000057.txt\n", 1093 | "44000058.txt\n", 1094 | "44000059.txt\n", 1095 | "44000060.txt\n", 1096 | "44000061.txt\n", 1097 | "44000062.txt\n", 1098 | "44000063.txt\n", 1099 | "44000064.txt\n", 1100 | "44000065.txt\n", 1101 | "44000066.txt\n", 1102 | "44000067.txt\n", 1103 | "44000068.txt\n", 1104 | "44000069.txt\n", 1105 | "44000070.txt\n", 1106 | "44000072.txt\n", 1107 | "44000073.txt\n", 1108 | "44000074.txt\n", 1109 | "44000075.txt\n", 1110 | "44000076.txt\n", 1111 | "44000077.txt\n", 1112 | "44000078.txt\n", 1113 | "44000079.txt\n", 1114 | "44000080.txt\n", 1115 | "44000081.txt\n", 1116 | "44000082.txt\n", 1117 | "44000083.txt\n", 1118 | "44000084.txt\n", 1119 | "44000085.txt\n", 1120 | "44000086.txt\n", 1121 | "44000087.txt\n", 1122 | "44000088.txt\n", 1123 | "44000090.txt\n", 1124 | "44000091.txt\n", 1125 | "44000092.txt\n", 1126 | "44000093.txt\n", 1127 | "44000094.txt\n", 1128 | "44000095.txt\n", 1129 | "44000096.txt\n", 1130 | "44000097.txt\n", 1131 | "44000098.txt\n", 1132 | "44000099.txt\n", 1133 | "44000100.txt\n", 1134 | "44000101.txt\n", 1135 | "44000102.txt\n", 1136 | "44000103.txt\n", 1137 | "44000104.txt\n", 1138 | "44000105.txt\n", 1139 | "44000106.txt\n", 1140 | "44000107.txt\n", 1141 | "44000108.txt\n", 1142 | "44000109.txt\n", 1143 | "44000110.txt\n", 1144 | "44000111.txt\n", 1145 | "44000112.txt\n", 1146 | "44000113.txt\n", 1147 | "50600000.txt\n", 1148 | "50600001.txt\n", 1149 | "50600002.txt\n", 1150 | "50600003.txt\n", 1151 | "50600004.txt\n", 1152 | "50600005.txt\n", 1153 | "50600006.txt\n", 1154 | "50600007.txt\n", 1155 | "50600008.txt\n", 1156 | "50600009.txt\n", 1157 | "50600010.txt\n", 1158 | "50600011.txt\n", 1159 | "50600012.txt\n", 1160 | "50600013.txt\n", 1161 | "50600014.txt\n", 1162 | "50600015.txt\n", 1163 | "50600016.txt\n", 1164 | "50600017.txt\n", 1165 | "50600018.txt\n", 1166 | "50600019.txt\n", 1167 | "50600020.txt\n", 1168 | "50600021.txt\n", 1169 | "50600022.txt\n", 1170 | "50600023.txt\n", 1171 | "50600024.txt\n", 1172 | "50600025.txt\n", 1173 | "50600026.txt\n", 1174 | "50600027.txt\n", 1175 | "50600028.txt\n", 1176 | "50600029.txt\n", 1177 | "50600030.txt\n", 1178 | "50600031.txt\n", 1179 | "50600032.txt\n", 1180 | "50600033.txt\n", 1181 | "50600034.txt\n", 1182 | "50600035.txt\n", 1183 | "50600036.txt\n", 1184 | "50600037.txt\n", 1185 | "50600038.txt\n", 1186 | "50600039.txt\n", 1187 | "50600040.txt\n", 1188 | "50600041.txt\n", 1189 | "50600042.txt\n", 1190 | "50600043.txt\n", 1191 | "50600044.txt\n", 1192 | "50600045.txt\n", 1193 | "50600046.txt\n", 1194 | "50600047.txt\n", 1195 | "50600048.txt\n", 1196 | "50600049.txt\n", 1197 | "50600050.txt\n", 1198 | "50600051.txt\n", 1199 | "50600052.txt\n", 1200 | "50600053.txt\n", 1201 | "50600054.txt\n", 1202 | "50600055.txt\n", 1203 | "50600056.txt\n", 1204 | "50600057.txt\n", 1205 | "50600058.txt\n", 1206 | "50600059.txt\n", 1207 | "50600060.txt\n", 1208 | "50600061.txt\n", 1209 | "50600062.txt\n", 1210 | "50600063.txt\n", 1211 | "50600064.txt\n", 1212 | "50600065.txt\n", 1213 | "50600066.txt\n", 1214 | "50600067.txt\n", 1215 | "50600068.txt\n", 1216 | "50600069.txt\n", 1217 | "50600070.txt\n", 1218 | "50600071.txt\n", 1219 | "50600072.txt\n", 1220 | "50600073.txt\n", 1221 | "50600074.txt\n", 1222 | "50600075.txt\n", 1223 | "50600076.txt\n", 1224 | "50600077.txt\n", 1225 | "50600078.txt\n", 1226 | "77000000.txt\n", 1227 | "77000001.txt\n", 1228 | "77000002.txt\n", 1229 | "77000003.txt\n", 1230 | "77000004.txt\n", 1231 | "77000005.txt\n", 1232 | "77000006.txt\n", 1233 | "77000007.txt\n", 1234 | "77000008.txt\n", 1235 | "77000009.txt\n", 1236 | "77000010.txt\n", 1237 | "77000011.txt\n", 1238 | "77000012.txt\n", 1239 | "77000013.txt\n", 1240 | "77000014.txt\n", 1241 | "77000015.txt\n", 1242 | "77000016.txt\n", 1243 | "77000017.txt\n", 1244 | "77000018.txt\n", 1245 | "77000019.txt\n", 1246 | "77000020.txt\n", 1247 | "77000021.txt\n", 1248 | "77000022.txt\n", 1249 | "77000023.txt\n", 1250 | "77000024.txt\n", 1251 | "77000025.txt\n", 1252 | "77000026.txt\n", 1253 | "77000027.txt\n", 1254 | "77000028.txt\n", 1255 | "77000029.txt\n", 1256 | "77000030.txt\n", 1257 | "77000031.txt\n", 1258 | "77000032.txt\n", 1259 | "77000033.txt\n", 1260 | "77000034.txt\n", 1261 | "77000035.txt\n", 1262 | "77000036.txt\n", 1263 | "77000037.txt\n", 1264 | "77000038.txt\n", 1265 | "77000039.txt\n", 1266 | "77000040.txt\n", 1267 | "77000041.txt\n", 1268 | "77000042.txt\n", 1269 | "77000043.txt\n", 1270 | "77000044.txt\n", 1271 | "77000045.txt\n", 1272 | "77000046.txt\n", 1273 | "77000047.txt\n", 1274 | "77000048.txt\n", 1275 | "77000049.txt\n", 1276 | "77000050.txt\n", 1277 | "77000051.txt\n", 1278 | "77000052.txt\n", 1279 | "77000053.txt\n", 1280 | "77000054.txt\n", 1281 | "77000055.txt\n", 1282 | "77000056.txt\n", 1283 | "77000057.txt\n", 1284 | "77000058.txt\n", 1285 | "77000059.txt\n", 1286 | "77000060.txt\n", 1287 | "77000061.txt\n", 1288 | "77000062.txt\n", 1289 | "77000063.txt\n", 1290 | "77000064.txt\n", 1291 | "77000065.txt\n", 1292 | "77000066.txt\n", 1293 | "77000067.txt\n", 1294 | "77000068.txt\n", 1295 | "77000069.txt\n", 1296 | "77000070.txt\n", 1297 | "77000071.txt\n", 1298 | "77000072.txt\n", 1299 | "77000073.txt\n", 1300 | "77000074.txt\n", 1301 | "77000075.txt\n", 1302 | "77000076.txt\n", 1303 | "77000077.txt\n", 1304 | "77000078.txt\n", 1305 | "77000079.txt\n", 1306 | "77000080.txt\n", 1307 | "77000081.txt\n", 1308 | "77000082.txt\n", 1309 | "77000083.txt\n", 1310 | "77000084.txt\n", 1311 | "77000085.txt\n", 1312 | "77000086.txt\n", 1313 | "77000087.txt\n", 1314 | "77000088.txt\n", 1315 | "77000089.txt\n", 1316 | "77000090.txt\n", 1317 | "77000091.txt\n", 1318 | "77000092.txt\n", 1319 | "77000093.txt\n", 1320 | "77000094.txt\n", 1321 | "77000095.txt\n", 1322 | "77000096.txt\n", 1323 | "77000097.txt\n", 1324 | "77000098.txt\n", 1325 | "77000099.txt\n", 1326 | "77000100.txt\n", 1327 | "77000101.txt\n", 1328 | "77000102.txt\n", 1329 | "77000103.txt\n", 1330 | "77000104.txt\n", 1331 | "77000105.txt\n", 1332 | "77000106.txt\n", 1333 | "90100000.txt\n", 1334 | "90100001.txt\n", 1335 | "90100002.txt\n", 1336 | "90100003.txt\n", 1337 | "90100004.txt\n", 1338 | "90100005.txt\n", 1339 | "90100006.txt\n", 1340 | "90100008.txt\n", 1341 | "90100009.txt\n", 1342 | "90100010.txt\n", 1343 | "90100011.txt\n", 1344 | "90100012.txt\n", 1345 | "90100013.txt\n", 1346 | "90100014.txt\n", 1347 | "90100016.txt\n", 1348 | "90100017.txt\n", 1349 | "90100018.txt\n", 1350 | "90100019.txt\n", 1351 | "90100020.txt\n", 1352 | "90100021.txt\n", 1353 | "90100022.txt\n", 1354 | "90100024.txt\n", 1355 | "90100025.txt\n", 1356 | "90100026.txt\n", 1357 | "90100027.txt\n", 1358 | "90100028.txt\n", 1359 | "90100029.txt\n", 1360 | "90100030.txt\n", 1361 | "90100032.txt\n", 1362 | "90100033.txt\n", 1363 | "90100035.txt\n", 1364 | "90100036.txt\n", 1365 | "90100037.txt\n", 1366 | "90100038.txt\n", 1367 | "90100040.txt\n", 1368 | "90100041.txt\n" 1369 | ] 1370 | }, 1371 | { 1372 | "name": "stdout", 1373 | "output_type": "stream", 1374 | "text": [ 1375 | "90100042.txt\n", 1376 | "90100043.txt\n", 1377 | "90100044.txt\n", 1378 | "90100045.txt\n", 1379 | "90100046.txt\n", 1380 | "90100048.txt\n", 1381 | "90100049.txt\n", 1382 | "90100050.txt\n", 1383 | "90100051.txt\n", 1384 | "90100052.txt\n", 1385 | "90100053.txt\n", 1386 | "90100054.txt\n", 1387 | "90100056.txt\n", 1388 | "90100057.txt\n", 1389 | "90100058.txt\n", 1390 | "90100059.txt\n", 1391 | "90100060.txt\n", 1392 | "90100061.txt\n", 1393 | "90100062.txt\n", 1394 | "90100064.txt\n", 1395 | "90100065.txt\n", 1396 | "90100066.txt\n", 1397 | "90100067.txt\n", 1398 | "90100068.txt\n", 1399 | "90100069.txt\n", 1400 | "90100070.txt\n", 1401 | "90100072.txt\n", 1402 | "90100073.txt\n", 1403 | "90100074.txt\n", 1404 | "90100075.txt\n", 1405 | "90100076.txt\n", 1406 | "90100077.txt\n", 1407 | "90100078.txt\n", 1408 | "90100081.txt\n", 1409 | "90100082.txt\n", 1410 | "90100083.txt\n", 1411 | "90100084.txt\n", 1412 | "90100086.txt\n", 1413 | "92000000.txt\n", 1414 | "92000001.txt\n", 1415 | "92000002.txt\n", 1416 | "92000003.txt\n", 1417 | "92000004.txt\n", 1418 | "92000005.txt\n", 1419 | "92000006.txt\n", 1420 | "92000007.txt\n", 1421 | "92000008.txt\n", 1422 | "92000009.txt\n", 1423 | "92000010.txt\n", 1424 | "92000011.txt\n", 1425 | "92000012.txt\n", 1426 | "92000013.txt\n", 1427 | "92000014.txt\n", 1428 | "92000015.txt\n", 1429 | "92000016.txt\n", 1430 | "92000017.txt\n", 1431 | "92000018.txt\n", 1432 | "92000019.txt\n", 1433 | "92000020.txt\n", 1434 | "92000021.txt\n", 1435 | "92000022.txt\n", 1436 | "92000023.txt\n", 1437 | "92000024.txt\n", 1438 | "92000025.txt\n", 1439 | "92000026.txt\n", 1440 | "92000027.txt\n", 1441 | "92000028.txt\n", 1442 | "92000029.txt\n", 1443 | "92000030.txt\n", 1444 | "92000031.txt\n", 1445 | "92000032.txt\n", 1446 | "92000033.txt\n", 1447 | "92000034.txt\n", 1448 | "92000035.txt\n", 1449 | "92000036.txt\n", 1450 | "92000037.txt\n", 1451 | "92000038.txt\n", 1452 | "92000039.txt\n", 1453 | "92000040.txt\n", 1454 | "92000041.txt\n", 1455 | "92000042.txt\n", 1456 | "92000043.txt\n", 1457 | "92000044.txt\n", 1458 | "92000045.txt\n", 1459 | "92000046.txt\n", 1460 | "92000047.txt\n", 1461 | "92000048.txt\n", 1462 | "92000049.txt\n", 1463 | "92000050.txt\n", 1464 | "92000051.txt\n", 1465 | "92000052.txt\n", 1466 | "92000053.txt\n", 1467 | "92000054.txt\n", 1468 | "92000055.txt\n", 1469 | "92000056.txt\n", 1470 | "92000057.txt\n", 1471 | "92000058.txt\n", 1472 | "92000059.txt\n", 1473 | "92000060.txt\n", 1474 | "92000061.txt\n", 1475 | "92000062.txt\n", 1476 | "92000063.txt\n", 1477 | "92000064.txt\n", 1478 | "92000065.txt\n", 1479 | "92000066.txt\n", 1480 | "92000067.txt\n", 1481 | "92000068.txt\n", 1482 | "92000069.txt\n", 1483 | "92000070.txt\n", 1484 | "92000071.txt\n", 1485 | "92000072.txt\n", 1486 | "92000073.txt\n", 1487 | "92000074.txt\n", 1488 | "92000075.txt\n", 1489 | "92000076.txt\n", 1490 | "92000077.txt\n", 1491 | "92000078.txt\n", 1492 | "92000079.txt\n", 1493 | "92000080.txt\n", 1494 | "92000081.txt\n", 1495 | "92000082.txt\n", 1496 | "92000083.txt\n", 1497 | "92000084.txt\n", 1498 | "92000085.txt\n", 1499 | "92000086.txt\n", 1500 | "92000087.txt\n", 1501 | "92000088.txt\n", 1502 | "92000089.txt\n", 1503 | "92000090.txt\n", 1504 | "92000091.txt\n", 1505 | "92000092.txt\n", 1506 | "92000093.txt\n", 1507 | "92000094.txt\n", 1508 | "92000095.txt\n", 1509 | "92000096.txt\n", 1510 | "92000097.txt\n", 1511 | "92000098.txt\n", 1512 | "92000099.txt\n", 1513 | "92000100.txt\n", 1514 | "92000101.txt\n", 1515 | "92000102.txt\n", 1516 | "92000103.txt\n", 1517 | "92000104.txt\n", 1518 | "92000105.txt\n", 1519 | "92000106.txt\n", 1520 | "92000107.txt\n", 1521 | "92000108.txt\n", 1522 | "92000109.txt\n", 1523 | "92000110.txt\n", 1524 | "92000111.txt\n", 1525 | "92000112.txt\n", 1526 | "92000113.txt\n", 1527 | "92000114.txt\n", 1528 | "92000115.txt\n", 1529 | "92000116.txt\n", 1530 | "92000117.txt\n", 1531 | "92000118.txt\n", 1532 | "92000119.txt\n" 1533 | ] 1534 | } 1535 | ], 1536 | "source": [ 1537 | "image_files = []\n", 1538 | "os.chdir(\"dataset\")\n", 1539 | "for filename in os.listdir(os.getcwd()):\n", 1540 | " if filename.endswith(\".txt\"):\n", 1541 | " with open(filename, 'r') as firstfile, open('data.txt','a') as secondfile:\n", 1542 | " print(filename)\n", 1543 | " for line in firstfile:\n", 1544 | " secondfile.write(line)\n" 1545 | ] 1546 | }, 1547 | { 1548 | "cell_type": "code", 1549 | "execution_count": 7, 1550 | "metadata": {}, 1551 | "outputs": [ 1552 | { 1553 | "name": "stdout", 1554 | "output_type": "stream", 1555 | "text": [ 1556 | "10013\n", 1557 | "[1942, 1506, 1965, 1625, 1474, 1501]\n" 1558 | ] 1559 | } 1560 | ], 1561 | "source": [ 1562 | "totalCount=0\n", 1563 | "d=[0,0,0,0,0,0]\n", 1564 | "with open('data.txt', 'r') as data:\n", 1565 | " for line in data:\n", 1566 | " totalCount+=1\n", 1567 | " d[int(line[0])]+=1\n", 1568 | "# print(line[0])\n", 1569 | "# print(line)\n", 1570 | " \n", 1571 | "print(c)\n", 1572 | "print(d)" 1573 | ] 1574 | }, 1575 | { 1576 | "cell_type": "code", 1577 | "execution_count": null, 1578 | "metadata": {}, 1579 | "outputs": [], 1580 | "source": [] 1581 | } 1582 | ], 1583 | "metadata": { 1584 | "kernelspec": { 1585 | "display_name": "Python 3", 1586 | "language": "python", 1587 | "name": "python3" 1588 | }, 1589 | "language_info": { 1590 | "codemirror_mode": { 1591 | "name": "ipython", 1592 | "version": 3 1593 | }, 1594 | "file_extension": ".py", 1595 | "mimetype": "text/x-python", 1596 | "name": "python", 1597 | "nbconvert_exporter": "python", 1598 | "pygments_lexer": "ipython3", 1599 | "version": "3.8.5" 1600 | } 1601 | }, 1602 | "nbformat": 4, 1603 | "nbformat_minor": 4 1604 | } 1605 | -------------------------------------------------------------------------------- /img/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VanillaHours/pcbDefectDetectionYOLO/bd5afc1a7742c32c51b7432ff1a922131716f3b7/img/1.png -------------------------------------------------------------------------------- /img/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VanillaHours/pcbDefectDetectionYOLO/bd5afc1a7742c32c51b7432ff1a922131716f3b7/img/2.png -------------------------------------------------------------------------------- /img/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VanillaHours/pcbDefectDetectionYOLO/bd5afc1a7742c32c51b7432ff1a922131716f3b7/img/5.png -------------------------------------------------------------------------------- /img/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VanillaHours/pcbDefectDetectionYOLO/bd5afc1a7742c32c51b7432ff1a922131716f3b7/img/6.png -------------------------------------------------------------------------------- /img/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VanillaHours/pcbDefectDetectionYOLO/bd5afc1a7742c32c51b7432ff1a922131716f3b7/img/7.png -------------------------------------------------------------------------------- /pcb_web.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "pcb_web.ipynb", 7 | "provenance": [], 8 | "collapsed_sections": [] 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | }, 17 | "accelerator": "GPU" 18 | }, 19 | "cells": [ 20 | { 21 | "cell_type": "code", 22 | "metadata": { 23 | "colab": { 24 | "base_uri": "https://localhost:8080/" 25 | }, 26 | "id": "aXzFIRogQWX4", 27 | "outputId": "58df8d02-de45-4d39-a44c-743f507039c5" 28 | }, 29 | "source": [ 30 | "from google.colab import drive\n", 31 | "drive.mount('/content/drive')" 32 | ], 33 | "execution_count": null, 34 | "outputs": [ 35 | { 36 | "output_type": "stream", 37 | "name": "stdout", 38 | "text": [ 39 | "Mounted at /content/drive\n" 40 | ] 41 | } 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "metadata": { 47 | "colab": { 48 | "base_uri": "https://localhost:8080/" 49 | }, 50 | "id": "-89Ei6P7Ql1w", 51 | "outputId": "d26d2dc0-ca5f-4689-8989-437eb4725eb9" 52 | }, 53 | "source": [ 54 | "!ln -s /content/drive/My\\ Drive/ /mydrive\n", 55 | "%cd '/mydrive/PCB_project/darknet'\n", 56 | "!ls" 57 | ], 58 | "execution_count": null, 59 | "outputs": [ 60 | { 61 | "output_type": "stream", 62 | "name": "stdout", 63 | "text": [ 64 | "/content/drive/My Drive/PCB_project/darknet\n", 65 | "00041000.jpg 00041039.jpg\t cfg\t\t\t image_yolov4.sh\n", 66 | "00041002.jpg 00041041.jpg\t chart.png\t\t include\n", 67 | "00041003.jpg 00041044.jpg\t chart_yolov3_custom.png json_mjpeg_streams.sh\n", 68 | "00041005.jpg 00041045.jpg\t cmake\t\t\t LICENSE\n", 69 | "00041006.jpg 00041048.jpg\t CMakeLists.txt\t\t Makefile\n", 70 | "00041007.jpg 00041060.jpg\t darknet\t\t net_cam_v3.sh\n", 71 | "00041009.jpg 00041149.jpg\t darknet53.conv.74\t net_cam_v4.sh\n", 72 | "00041010.jpg 12000001_temp.jpg darknet53.conv.74.1\t obj\n", 73 | "00041011.jpg 12000001_test.jpg DarknetConfig.cmake.in predictions.jpg\n", 74 | "00041012.jpg 13000098_temp.jpg darknet_images.py\t README.md\n", 75 | "00041013.jpg 13000098_test.jpg darknet.py\t\t results\n", 76 | "00041014.jpg 3rdparty\t\t darknet_video.py\t scripts\n", 77 | "00041027.jpg backup\t\t data\t\t\t src\n", 78 | "00041030.jpg bad.list\t\t dataset\t\t vcpkg.json\n", 79 | "00041031.jpg build\t\t generate_train.py\t video_yolov3.sh\n", 80 | "00041032.jpg build.ps1\t\t image_yolov3.sh\t video_yolov4.sh\n" 81 | ] 82 | } 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "metadata": { 88 | "id": "v_T8NumyRfNz" 89 | }, 90 | "source": [ 91 | "!chmod +x ./darknet" 92 | ], 93 | "execution_count": null, 94 | "outputs": [] 95 | }, 96 | { 97 | "cell_type": "code", 98 | "metadata": { 99 | "colab": { 100 | "base_uri": "https://localhost:8080/" 101 | }, 102 | "id": "MQ5x8VF3QPHH", 103 | "outputId": "814948a3-eb5e-4414-ea96-5be227d9b139" 104 | }, 105 | "source": [ 106 | "!pip install pywebio\n", 107 | "!pip install flask_ngrok" 108 | ], 109 | "execution_count": null, 110 | "outputs": [ 111 | { 112 | "output_type": "stream", 113 | "name": "stdout", 114 | "text": [ 115 | "Collecting pywebio\n", 116 | " Downloading pywebio-1.4.0.tar.gz (339 kB)\n", 117 | "\u001b[K |████████████████████████████████| 339 kB 5.4 MB/s \n", 118 | "\u001b[?25hRequirement already satisfied: tornado>=5.0 in /usr/local/lib/python3.7/dist-packages (from pywebio) (5.1.1)\n", 119 | "Collecting user-agents\n", 120 | " Downloading user_agents-2.2.0-py3-none-any.whl (9.6 kB)\n", 121 | "Collecting ua-parser>=0.10.0\n", 122 | " Downloading ua_parser-0.10.0-py2.py3-none-any.whl (35 kB)\n", 123 | "Building wheels for collected packages: pywebio\n", 124 | " Building wheel for pywebio (setup.py) ... \u001b[?25l\u001b[?25hdone\n", 125 | " Created wheel for pywebio: filename=pywebio-1.4.0-py3-none-any.whl size=348394 sha256=9596a3cb3c804b500f7cc64b80f520a6476fad7eaf722eace07bef9a9082813e\n", 126 | " Stored in directory: /root/.cache/pip/wheels/db/7c/3b/853abdef49e39ea18d115f0262ee9e4c0a344bf1ba5439390e\n", 127 | "Successfully built pywebio\n", 128 | "Installing collected packages: ua-parser, user-agents, pywebio\n", 129 | "Successfully installed pywebio-1.4.0 ua-parser-0.10.0 user-agents-2.2.0\n", 130 | "Collecting flask_ngrok\n", 131 | " Downloading flask_ngrok-0.0.25-py3-none-any.whl (3.1 kB)\n", 132 | "Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from flask_ngrok) (2.23.0)\n", 133 | "Requirement already satisfied: Flask>=0.8 in /usr/local/lib/python3.7/dist-packages (from flask_ngrok) (1.1.4)\n", 134 | "Requirement already satisfied: Werkzeug<2.0,>=0.15 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.8->flask_ngrok) (1.0.1)\n", 135 | "Requirement already satisfied: click<8.0,>=5.1 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.8->flask_ngrok) (7.1.2)\n", 136 | "Requirement already satisfied: itsdangerous<2.0,>=0.24 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.8->flask_ngrok) (1.1.0)\n", 137 | "Requirement already satisfied: Jinja2<3.0,>=2.10.1 in /usr/local/lib/python3.7/dist-packages (from Flask>=0.8->flask_ngrok) (2.11.3)\n", 138 | "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/dist-packages (from Jinja2<3.0,>=2.10.1->Flask>=0.8->flask_ngrok) (2.0.1)\n", 139 | "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->flask_ngrok) (3.0.4)\n", 140 | "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->flask_ngrok) (2.10)\n", 141 | "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->flask_ngrok) (1.24.3)\n", 142 | "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->flask_ngrok) (2021.10.8)\n", 143 | "Installing collected packages: flask-ngrok\n", 144 | "Successfully installed flask-ngrok-0.0.25\n" 145 | ] 146 | } 147 | ] 148 | }, 149 | { 150 | "cell_type": "code", 151 | "metadata": { 152 | "colab": { 153 | "base_uri": "https://localhost:8080/" 154 | }, 155 | "id": "RclMAGasQPA3", 156 | "outputId": "9651010f-5e6a-4f41-e788-f76f07ce214d" 157 | }, 158 | "source": [ 159 | "from pywebio.platform.flask import webio_view\n", 160 | "from pywebio import STATIC_PATH\n", 161 | "from flask_ngrok import run_with_ngrok\n", 162 | "from flask import Flask, send_from_directory\n", 163 | "from pywebio.input import *\n", 164 | "from pywebio.output import *\n", 165 | "import argparse\n", 166 | "from pywebio import start_server\n", 167 | "import requests\n", 168 | "import json\n", 169 | "from bs4 import BeautifulSoup\n", 170 | "from sklearn.preprocessing import LabelEncoder\n", 171 | "import subprocess\n", 172 | "app = Flask(__name__)\n", 173 | "run_with_ngrok(app) \n", 174 | "\n", 175 | "\n", 176 | "def predict():\n", 177 | " img = file_upload(\"Select a image:\", accept=\"image/*\")\n", 178 | "\n", 179 | " open(img['filename'], 'wb').write(img['content'])\n", 180 | " src_img_loc = str(img['filename'])\n", 181 | " des_img_loc = 'predictions.jpg'\n", 182 | "\n", 183 | " # !./darknet detector test data/custom.data cfg/yolov3-tiny-custom.cfg /mydrive/modelbackup/yolov3-tiny-custom_last.weights /mydrive/pred2.jpg -thresh 0.3\n", 184 | " # cmd = (['./darknet', 'detector', 'test', 'data/custom.data', 'cfg/yolov3-tiny-custom.cfg', '/mydrive/modelbackup/yolov3-tiny-custom_last.weights', src_img_loc, '-thresh 0.3'])\n", 185 | " cmd = (['./darknet', 'detector', 'test', 'data/custom.data', 'cfg/yolov3-tiny-custom.cfg', '/mydrive/PCB_project/darknet/backup/yolov3_custom_final.weights', src_img_loc, '-thresh 0.4'])\n", 186 | " proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", 187 | "\n", 188 | " o, e = proc.communicate()\n", 189 | "\n", 190 | " put_row([\n", 191 | " put_image(open(src_img_loc, 'rb').read())\n", 192 | " , None\n", 193 | " , put_image(open(des_img_loc, 'rb').read())\n", 194 | " ])\n", 195 | "\n", 196 | "app.add_url_rule('/', 'webio_view', webio_view(predict),\n", 197 | " methods=['GET', 'POST', 'OPTIONS'])\n", 198 | "\n", 199 | "app.run()\n" 200 | ], 201 | "execution_count": null, 202 | "outputs": [ 203 | { 204 | "output_type": "stream", 205 | "name": "stdout", 206 | "text": [ 207 | " * Serving Flask app \"__main__\" (lazy loading)\n", 208 | " * Environment: production\n", 209 | "\u001b[31m WARNING: This is a development server. Do not use it in a production deployment.\u001b[0m\n", 210 | "\u001b[2m Use a production WSGI server instead.\u001b[0m\n", 211 | " * Debug mode: off\n" 212 | ] 213 | }, 214 | { 215 | "output_type": "stream", 216 | "name": "stderr", 217 | "text": [ 218 | " * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\n" 219 | ] 220 | }, 221 | { 222 | "output_type": "stream", 223 | "name": "stdout", 224 | "text": [ 225 | " * Running on http://3b64-34-133-166-255.ngrok.io\n", 226 | " * Traffic stats available on http://127.0.0.1:4040\n" 227 | ] 228 | }, 229 | { 230 | "output_type": "stream", 231 | "name": "stderr", 232 | "text": [ 233 | "127.0.0.1 - - [17/Nov/2021 04:03:33] \"\u001b[37mGET / HTTP/1.1\u001b[0m\" 200 -\n", 234 | "127.0.0.1 - - [17/Nov/2021 04:03:34] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 235 | "127.0.0.1 - - [17/Nov/2021 04:03:35] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 236 | "127.0.0.1 - - [17/Nov/2021 04:03:36] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 237 | "127.0.0.1 - - [17/Nov/2021 04:03:37] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 238 | "127.0.0.1 - - [17/Nov/2021 04:03:38] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 239 | "127.0.0.1 - - [17/Nov/2021 04:03:39] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 240 | "127.0.0.1 - - [17/Nov/2021 04:03:40] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 241 | "127.0.0.1 - - [17/Nov/2021 04:03:41] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 242 | "127.0.0.1 - - [17/Nov/2021 04:03:42] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 243 | "127.0.0.1 - - [17/Nov/2021 04:03:42] \"\u001b[37mPOST /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 244 | "127.0.0.1 - - [17/Nov/2021 04:03:44] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 245 | "127.0.0.1 - - [17/Nov/2021 04:03:45] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 246 | "127.0.0.1 - - [17/Nov/2021 04:03:46] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 247 | "127.0.0.1 - - [17/Nov/2021 04:03:47] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 248 | "127.0.0.1 - - [17/Nov/2021 04:03:53] \"\u001b[37mGET / HTTP/1.1\u001b[0m\" 200 -\n", 249 | "127.0.0.1 - - [17/Nov/2021 04:03:53] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 250 | "127.0.0.1 - - [17/Nov/2021 04:03:55] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n", 251 | "127.0.0.1 - - [17/Nov/2021 04:03:56] \"\u001b[37mGET /?app=index HTTP/1.1\u001b[0m\" 200 -\n" 252 | ] 253 | } 254 | ] 255 | }, 256 | { 257 | "cell_type": "code", 258 | "metadata": { 259 | "id": "1cCvHDp_QO-B", 260 | "colab": { 261 | "base_uri": "https://localhost:8080/" 262 | }, 263 | "outputId": "fde8d0d1-7dea-4a2f-9c7d-096b92593515" 264 | }, 265 | "source": [ 266 | "!./darknet detector test data/custom.data cfg/yolov3-tiny-custom.cfg /mydrive/PCB_project/darknet/backup/yolov3_custom_final.weights /mydrive/pred.jpg -thresh 0.4" 267 | ], 268 | "execution_count": null, 269 | "outputs": [ 270 | { 271 | "output_type": "stream", 272 | "name": "stdout", 273 | "text": [ 274 | " CUDA-version: 11010 (11020), cuDNN: 7.6.5, GPU count: 1 \n", 275 | " OpenCV version: 3.2.0\n", 276 | " 0 : compute_capability = 370, cudnn_half = 0, GPU: Tesla K80 \n", 277 | "net.optimized_memory = 0 \n", 278 | "mini_batch = 1, batch = 2, time_steps = 1, train = 0 \n", 279 | " layer filters size/strd(dil) input output\n", 280 | " 0 Create CUDA-stream - 0 \n", 281 | " Create cudnn-handle 0 \n", 282 | "conv 16 3 x 3/ 1 416 x 416 x 3 -> 416 x 416 x 16 0.150 BF\n", 283 | " 1 max 2x 2/ 2 416 x 416 x 16 -> 208 x 208 x 16 0.003 BF\n", 284 | " 2 conv 32 3 x 3/ 1 208 x 208 x 16 -> 208 x 208 x 32 0.399 BF\n", 285 | " 3 max 2x 2/ 2 208 x 208 x 32 -> 104 x 104 x 32 0.001 BF\n", 286 | " 4 conv 64 3 x 3/ 1 104 x 104 x 32 -> 104 x 104 x 64 0.399 BF\n", 287 | " 5 max 2x 2/ 2 104 x 104 x 64 -> 52 x 52 x 64 0.001 BF\n", 288 | " 6 conv 128 3 x 3/ 1 52 x 52 x 64 -> 52 x 52 x 128 0.399 BF\n", 289 | " 7 max 2x 2/ 2 52 x 52 x 128 -> 26 x 26 x 128 0.000 BF\n", 290 | " 8 conv 256 3 x 3/ 1 26 x 26 x 128 -> 26 x 26 x 256 0.399 BF\n", 291 | " 9 max 2x 2/ 2 26 x 26 x 256 -> 13 x 13 x 256 0.000 BF\n", 292 | " 10 conv 512 3 x 3/ 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BF\n", 293 | " 11 max 2x 2/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.000 BF\n", 294 | " 12 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF\n", 295 | " 13 conv 256 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 256 0.089 BF\n", 296 | " 14 conv 512 3 x 3/ 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BF\n", 297 | " 15 conv 33 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 33 0.006 BF\n", 298 | " 16 yolo\n", 299 | "[yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00\n", 300 | " 17 route 13 \t\t -> 13 x 13 x 256 \n", 301 | " 18 conv 128 1 x 1/ 1 13 x 13 x 256 -> 13 x 13 x 128 0.011 BF\n", 302 | " 19 upsample 2x 13 x 13 x 128 -> 26 x 26 x 128\n", 303 | " 20 route 19 8 \t -> 26 x 26 x 384 \n", 304 | " 21 conv 256 3 x 3/ 1 26 x 26 x 384 -> 26 x 26 x 256 1.196 BF\n", 305 | " 22 conv 33 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 33 0.011 BF\n", 306 | " 23 yolo\n", 307 | "[yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00\n", 308 | "Total BFLOPS 5.455 \n", 309 | "avg_outputs = 325902 \n", 310 | " Allocate additional workspace_size = 12.46 MB \n", 311 | "Loading weights from /mydrive/PCB_project/darknet/backup/yolov3_custom_final.weights...\n", 312 | " seen 64, trained: 24 K-images (0 Kilo-batches_64) \n", 313 | "Done! Loaded 24 layers from weights-file \n", 314 | " Detection layer: 16 - type = 28 \n", 315 | " Detection layer: 23 - type = 28 \n", 316 | "/mydrive/pred.jpg: Predicted in 12.221000 milli-seconds.\n", 317 | "pin-hole: 60%\n", 318 | "short: 42%\n", 319 | "copper: 98%\n", 320 | "open: 46%\n", 321 | "pin-hole: 91%\n", 322 | "pin-hole: 72%\n", 323 | "Unable to init server: Could not connect: Connection refused\n", 324 | "\n", 325 | "(predictions:1430): Gtk-\u001b[1;33mWARNING\u001b[0m **: \u001b[34m05:30:34.512\u001b[0m: cannot open display: \n" 326 | ] 327 | } 328 | ] 329 | }, 330 | { 331 | "cell_type": "code", 332 | "metadata": { 333 | "id": "XdCUp5cHAC32" 334 | }, 335 | "source": [ 336 | "" 337 | ], 338 | "execution_count": null, 339 | "outputs": [] 340 | } 341 | ] 342 | } -------------------------------------------------------------------------------- /wu2021.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VanillaHours/pcbDefectDetectionYOLO/bd5afc1a7742c32c51b7432ff1a922131716f3b7/wu2021.pdf --------------------------------------------------------------------------------