五分鐘認識用 YOLO 做血液抹片物件偵測(Object Detection)

物件偵測(Object Detection)的目的,在找出物體的範圍、座標框,接著再做分類。這次,讓我們來瞧瞧如何運用物件偵測的深度學習模型,來讓 YOLO 看懂三大血球吧!

還記得在台大兒科血液腫瘤科病房時,無論病房事務多麽龐雜,每個禮拜都會有老師手把手帶我們在總院病理檢驗科或兒醫高層樓研究室看顯微鏡底下的血片,觀賞老師精湛高深的血球辨識藝術。你知道嗎?或許最精細困難的辨別還是需要專業人員做得最好,但 YOLO 竟然在稍經訓練後,也能通過初階的三大血球會面考呢!

攝影師:Artem Podrez,連結:Pexels

物件偵測(Object Detection)的目的,在找出物體的範圍、座標框,接著再做分類。針對「預測被拆成幾個步驟來做」,現在主流上分成兩種方式:One Stage 與 Two Stages,最初期多數是用 Two / Many Stages,像 R-CNN、Fast R-CNN,第一階段先試著找出各種圖中有可能有東西的部位,第二階段則一張張的內容切下來送入分類網路 Classifier 做分類 Region Classification、並修正微調原本找到的範圍 Box Regression,就能預測出圖中被分類的物體和座標大小。目前更多人用的是 One Stage,圖片 Input 後模型會一次產出所有資訊,包含物體的框框和分類結果,濃縮集合在模型裡,只要有圖片和正確結果的框框,把正確答案框框轉換成模型預測出 Tensor 可以對答案、計算 Loss 的格式,我們就能直接訓練,不用分成兩個階段,訓練起來比較快、更簡單,精確度也非常接近,成為常見的應用,像是能 Real-Time 做物件偵測的 YOLO(You Only Look Once)。

Source

物件偵測標註物體座標和分類類別的方式有很多,原則上座標須記錄 X 與 Y 的位置,像 VOC Dataset 用 X、Y 的最小及最大值,去找出長方形框框左上和右下角的座標,瞭解實際的範圍在哪裏,類別則放在 Object 的 Name 裡,標註完就能做物件偵測的訓練。YOLO v1-v3 的作者有個很有趣的示範影片,把影片拆成一張張 2D 的圖片依序通過模型做物件偵測,再將結果儲存、串連起來,不過有個把房子誤判成火車的小 Bug,個人覺得其實蠻像的 😆
https://arxiv.org/abs/1506.02640

Source

YOLO v1-v3 的核心思想沒有差異很大,我們從 v1 開始聊起。YOLO 的想法是把圖片切成 7×7 = 49 等份,每個邊 7 格(Grid / Cell),考量到物件偵測要做分類,所以針對每 1 個 Grid 的範圍預測類別(有點類似 Segmentation 是把每個 Pixel 做分類),總共有 49 個分類的結果;每個 Grid 也會以內部為基準,預測 2 個大小不同的框框、以及它們的機率值,機率值越大,代表模型覺得該處越有可能存在物體,框線也越粗,這些 Box 的中心點都是落在該 Grid 內部,不會超出格子範圍。無論圖片中有沒有物體,每一個 Grid 都還是會預測出 2 個框框座標的中心點座標 (x, y)、物體的寬度 (w) 及高度 (h) 共 4 個數值,我們就能畫出該 Box 實際的範圍邊界,若 YOLO 覺得沒有物體則會以較小的機率值輸出。因此,YOLO v1 會有 49 (Grid) x 2 (Box/Grid) = 98 Boxes 總共 98 個框框,去標出模型覺得有可能存在的物體,並用框線粗細表示機率值高低;此外,每個 Grid 也會預測它各自的分類,以不同顏色顯現。把兩者結合起來,我們就能針對每個框框根據對應區域分類的結果來上色、視覺化,也是模型的直接輸出。但 98 個框框有點太多,為了去蕪存菁,我們把機率值太低、不太可能是物體的框框過濾掉,並以 NMS 去合併預測為同類別的框框,轉換後才是模型看起來比較舒服的結果。[微註記:如果是 3D 影像,中心點座標 (x, y) 還要加上 z、物體除了寬高還要加上深度 d]

Source: https://arxiv.org/pdf/1506.02640.pdf

YOLO Model Input 大小為 448 x 448,接上卷積層 CNN 特徵抽取、全連接層做座標與類別的預測,最後得到一疊形狀是 (7, 7, 30) 的 Tensors 輸出,7 x 7 是 YOLO 把圖切成 7 等份的 Grid Size,30 則是物體偵測和分類的資訊合併結果。為什麼是 Feature Maps Dimension 長度是 30 呢?以 v1 來說,前 5 個數值是 YOLO 在該 Grid 所預測出第 1 個框框的資訊 (x, y, w, h, c),分別是 x 座標、y 座標、預測寬度、預測高度(前 4 個數值可以繪出 Box)、物體存在的機率值(Confidence 0–1,機率越大,代表模型覺得越有可能有東西),第 6–10 個數值則是預測出第 2 個框框的數值,剩下的 20 個是 VOC Dataset 預測的 20 種物體分類機率值,總共是長度為 30 的向量,圖中 49 個 Grid 都會做一樣的事。

Source

計算預測結果和正確答案誤差的 YOLO Loss 稍微複雜,主要拆成三大塊:
1️⃣ 計算 98 個 Bounding Box 座標、尺寸大小上的誤差,如果該 Grid 有物體,就需要做計算
2️⃣ 如果該 Grid 有物體,預測出的機率值應該要越靠近 1;如果沒有東西,機率值越接近 0 越好
3️⃣ 分類的誤差

總結來說,YOLO v1 的 Output 有 7x7x30 個數值,30 代表 VOC Dataset 裡的 20 個類別,以及每個 Grid 預測出 2 個框框的 5 個數值(w, h, x, y, confidence)、1 個分類結果。

Source

就像前面說的,Model 預測出這麼多數值,勢必要有去蕪存菁的方法,這時再次用到我們聊 Segmentation 時用到的 IOU(Intersection Over Union)概念,比較預測出和實際的範圍重疊程度有多少。而最主要的方法,是用 NMS(Non-Maximum Suppression)來把許多框框合併起來,原則是「不是最大的,就把它去掉」:YOLO 除了框框和類別之外,還會預測出 c 值,數值越大代表該處越有可能有物體存在。以狗狗的 5 個框框為例,我們把這 5 個框框的 c 值列出來,從高排到低,第 1 回合先把最高的 (0.9) 取出來,計算第一名和其他 4 個框框的 IOU、看它們的重合程度,接著依照我們訂的 Threshold 門檻值 (0.5) 來決定,只要超過門檻值,代表我們認為它們是一樣的東西,所以把 c 值較小、但 IOU 超過門檻值的其他框框砍掉;第 2 回合依樣畫葫蘆,把剩下來最高的 (0.89) 取出來,計算和剩下其他 2 個框框的 IOU,發現都超過門檻值,代表是重複的預測,因此也把它們砍掉;一路做到結束,剩下來就是 NMS 合併重複預測後的結果,也是人類比較習慣的輸出。[微註記:不同類別重複預測是不會被合併的,NMS 只針對相同類別做合併]

Source

物件偵測衡量的指標,稱作 mAP(Mean Average Precision),針對單一類別做計算;譬如我們把模型預測出來的所有狗狗依照 c 值做排序,跟正確答案做比對,預測命中為 True、沒中是 False,在第一和第二名之間取個門檻值,計算門檻值以上的 Precision(預測結果正確:模型說有狗狗,結果也真的有狗)及 Recall(整張圖裡真正的狗狗,我們抓到幾隻)分別是多少,以此類推去計算第二和第三名、第三和第四名… 的 Precision 和 Recall,以 Precision 為縱軸、Recall 為橫軸畫圖,再把 Precision 在特定 Recall 範圍內的值補成階梯,代表預測結果類別的準確度,原則上 Precision 越低(精準度)、Recall 會越高(把想要的東西抓出來),兩者算是等價的交換。mAP 就是計算階梯底下的面積,面積越大、結果越好,越往右上角接近、模型越完美,代表我們說那裡有隻狗狗、那裡就真的有隻狗狗。

Source

除了 YOLO 之外,還有 SSD(Single Shot MultiBox Detector)這個模型也在做物件偵測,兩者的架構類似,差別在於 YOLO 只有 1 組輸出,v1 單次最多就是預測 98 個物件,而 SSD 會有很多組不同大小的預測輸出;且 YOLO 是預測物體座標和大小,SSD 則引入 Anchor Box 的概念,預先定義好一些大小不同的框框,預測時不需去看物體有多大,反而是要如何放大或縮小原先定義好的框框,也就是預測放大縮小的「比例」。

Source

YOLO v2 和 v1 差距沒有很大,v1 在單個 Grid 預測 2 個 Box 和 1 個分類結果,分類是以「區塊」為基準,但 2 個框框只能是同一個分類的結果,但如果有兩個正確答案(譬如重疊的兩個物體,中心點落在同個區塊內),v1 是無法區分這兩個類別的,會帶有相同的分類結果。v2 為了解決這個問題,在每個框框預測時,都有屬於它們各自的分類,此時分類是跟著框框、而不是跟著區塊來走,除了原本的 5 個數值(w, h, x, y, confidence),還要加上 20 個類別,因此每個框框都有 25 個數值來代表。此外,v2 也把原本的區塊切得更細,從 7 x 7 換成 13 x 13,每個區塊又預測 5 個框框,故 Output = 13 * 13 * (Classes + 5 分類加上座標資訊) * 5 Bounding Boxes,更引用 Anchor Boxes 預先定義好寬度、高度的框框,預測的是從左上角往右下角要移動多少個單位、長寬放大縮小的比例,就不會直接輸出預測的寬度和高度。目前主流是 Anchor-Based,比較準確、但需要自行換算座標,比較複雜一點。

Source

YOLO v3 在 CNN Model 設計出 Darknet-53 架構,比較輕量化,用 1 x 1 和 3 x 3 的 Convolution 加上 ResNet 的 Residual 概念整合起來。基本的 Darknetconv2D 是 Convolution + Batch Normalization + Leaky Relu 構成元素,再串上 ResNet 的 res unit,重複好幾次做成 Resblock_body 成為它的骨幹,之後的其中一個分支為 13 x 13 x 255,第二和第三個分支則用到類似 UNet 把輸出前的一層放大兩倍、再和之前的 Resblock_body Concat 在一起輸出,變成 26 x 26 x 255,第三分支再放大兩倍為 52 x 52 x 255。因此和 v2 不同的是,v3 輸出了 3 組不同的結果,255 = 3 * (5 + 80),因為 v3 用的 Dataset 有 80 個類別,所以每個 Bounding Box 有 85 個數值,而每個 Grid 會預測 3 個 Box,所以深度就是 255,和預測的類別有關而變動,譬如預測 10 類的 v3 深度變成 3 * (5+10)。

Source

YOLO v2 的模型輸出只有 1 組 13 x 13,偵測小物件的準確度不高,v3 就透過不同細緻程度的 Output 來提高小物件偵測的表現,以下放 v2 和 v3 的 github 讓各位朋友參考。v4 則在 CNN 架構和訓練方法有更多的嘗試,但變革幅度沒有 v1 — v3 那麼顯著~
https://github.com/experiencor/keras-yolo2
https://github.com/qqwweee/keras-yolo3

我們今天就用 YOLO 來針對血液抹片三類最基本的血球:白血球、紅血球、血小板做辨識吧!

from utils import DataGenerator, read_annotation_lines
from models import Yolov4
from config import yolo_config
import os
from glob import glob
import numpy as np

train_lines, val_lines = read_annotation_lines('./dataset/train_txt/anno.txt', test_size=0.2)
IMG_FOLDER_PATH = './'
class_name_path = os.path.join(FOLDER_PATH, 'class_names/bccd_classes.txt') # bccd_classes or aoi_classes
data_gen_train = DataGenerator(train_lines, class_name_path, IMG_FOLDER_PATH)
data_gen_val = DataGenerator(val_lines, class_name_path, IMG_FOLDER_PATH)

model = Yolov4(weight_path=None, 
               class_name_path=class_name_path)

model.fit(data_gen_train, 
          initial_epoch=0,
          epochs=10000, 
          val_data_gen=data_gen_val)

標註的文件 xml 檔案是每張圖片記錄的座標位置,由文字可見這張血片 jpg 檔第一個 Object 是 WBC(白血球),座標位置被放在 <bndbox> 的標籤裡。

接著我們再把 xml 轉為單一座標檔案 txt 加上額外訓練參數、訓練類別的名稱來訓練。DataGenerator 是把單張血片和正確答案對應起來、座標位置的換算,再送到 Yolov4 的 Model 去訓練;由隨機的血片預測圖來看,除了 Bounding Box 之外,還會有分類、預測機率值,表格就能一目瞭然座標位置、分類、機率值、物件寬高度等。

希望各位朋友會喜歡這次對於物件偵測的介紹、和淺顯在醫療上相關的應用,下次讓我們再來瞧瞧深度學習的理論與實例吧 😍

#CC

2,118 thoughts on “五分鐘認識用 YOLO 做血液抹片物件偵測(Object Detection)

  1. Let’s first start with our email doctype for our template since this is the very first part of the HTML document we’ll be building inside of for our email design. If you need more guidance on creating an HTML document and getting started with a text editor, please see the resources page where there is an introduction to the Visual Studio Code Text Editor. In HTML email, the simple answer to “what is the best email doctype?” is whichever one works in the most email clients (such as Outlook). Step into the world of modern email marketing with our latest free email template offering — the “PrettyLittleThing” welcome Email! This elegant and sophisticated design perfectly encapsulates a seamless blend of style and functionality. Visual Overview: Dominant hues of soft pastels set …
    http://koewa.or.kr/bbs/board.php?bo_table=free&wr_id=8813
    By now, it should be clear that writing help emails isn’t too hard. Here we bring it to life with some samples. ‘What’s the big deal with technical support emails?’ you might ask. Aren’t they simple? In theory, they are, yet many customer support agents manage to make a significant mess. Though it’d be ideal to hand-craft every email you send, it can also be time-consuming and counterproductive. Conveying a message through writing requires a lot of effort. You need to zero down on a structure, find the right words, and check for errors. This only gets more complex when writing business emails. What is it about email writing that makes it more complicated than other modes of communication? In this article are IT announcement email templates that cover a range of scenarios. These templates will help convey important information clearly and concisely, as well as foster a sense of trust and reliability.

  2. Does PayPal betting help with responsible gambling?PayPal betting is an excellent option for bettors who have firm money management plans in place. PayPal serves as a buffer between your bank account and your bank account, which eliminates the threat of overdraft charges. You can also set limits on your PayPal account to ensure you do not spend more money than you can afford to lose. A unique feature of using PayPal at BetMGM is the ability to withdraw to PayPal even if you deposited funds with a different payment method. No matter how you deposited money into your bankroll, you can access your winnings through PayPal. For most payment methods the lowest withdrawal limit is set at $10. If you would like to withdraw less than $10 then a Bet365 Mastercard allows withdrawals as low as $5, or you can visit the cashier at the Hard Rock Casino to withdraw as low as $1.
    https://www.gta5-mods.com/users/downloadwizardo
    If you’re searching for the most reputable casinos accepting Siru Mobile, then you can consult the list at the top of the page. We strive to offer you the best casinos on the internet, and we also keep our list updated with the new online casinos, in case you’re looking for the latest Siru casino to hit the market. Unique Live Casino Experience: Experience the excitement of live casino games from well-known game providers with professional and friendly live dealers. This unmatched online casino doesn’t currently have any downloadable mobile app. However, Zulabet Casino will communicate when it launches the mobile app like many other online casinos. Explore over 2500 casino games at Bethard and find your favorite among slots, exclusive jackpots and live casino experiences. With a Swedish license and a focus on gaming fun, we offer a secure and mobile-friendly platform. Register quickly, withdraw your winnings free of charge and dive into a world of exciting casino entertainment. Bethard – where the games take you to the next level!

  3. Firstly, you’ll need to choose a game, or two games if you’re going for a double correct score. You can do this by doing your own research, or by selecting your favourite tip from the Free Super Tips page. Then place your bet. To place a double correct score, make sure to put your stake in the ‘doubles’ section – remember to always check your stake! As a side note, when you place this type of bet, most bookies will show your maximum potential winnings in your receipt. Therefore, be sure to check how much you have actually won in your betting history. Using Historical Data To Predict Football Match Outcomes Flashscore If you’re one of the lucky people that manage to predict all the scores on each of the 6 super games on a given week you will win £250,000. However, if more than one user manages to predict all of the scores correctly the prize will be awarded to the player who submitted the closest ‘Golden Goal’ prediction.Finally, if you and another player predict everything correctly but also have the same minute selected for the Golden Goal prediction, you’ll split the £250,000 equally.
    https://jareddpzi332211.blogsumer.com/26403061/run-line-in-baseball-betting
    My friends and I use this all the time to keep track of our bets. It has been an app we have been looking for for years. It’s awesome, hands down. Powered by WordPress VIP  Very tough …. Giants live ML IS +310 , and Yanks will score more. Judge’s home run prop today at Pinny was +450 ….. damn …. And he’s not done yet.  By not reflecting a user’s betting history in offers and bonuses, operators are missing an opportunity. If users have bet repeatedly on a certain sport or team in the past, a platform would be wise to streamline the process of placing bets on those sectors in the future. To ensure that no one can access your account if they happen to get ahold of your phone, don’t allow your device to save your password. Make sure that you have to type it in every time, or use fingerprint recognition to allow for the opening of your app.

  4. Bella Nail Palais, best nail salon in Murfreesboro has to offer: Upgrade your service to include no-chip, LED polish! This gel lacquer is a “true” gel, not a resin hybrid, and will not dry out your nail plates or cause the white discoloration that resin polishes leave behind. Each coat of No Chip Paint cures completely to a rock-hard, high gloss finish that lasts! Thank you! Use code WELCOME 15 at checkout Neutral nail colors make this ombre a force of nailture. Upgrade your service to include no-chip, LED polish! This gel lacquer is a “true” gel, not a resin hybrid, and will not dry out your nail plates or cause the white discoloration that resin polishes leave behind. Each coat of No Chip Paint cures completely to a rock-hard, high gloss finish that lasts! Great place a awesome staff! I love going here they are nice an have everything I want all in one stop shop. Ordering from Online was also great!!
    https://www.intensedebate.com/people/menslonghairbun
    The 6 Best Blow Dryers Safe Enough for Fine Hair But my favorite part about this foam mousse and why it’s definitely one of the best mousses for your braids is that it’s pH balanced. And using pH balanced products is vital to your health. I even gave you the benefits of pH balanced products and a list of the best pH balanced body washes for men in 2022 because it’s important that all my guys have not only healthy and vibrant hair, but skin, too. The Goiple Locks & Braid Foam-Control is a mousse formula that adds the finishing protective touch to your braided hairstyle. You can now create flawless hairstyles with incredible hold while easily volumizing and defining braids. Say goodbye to frizz as this foam creates a protective barrier against humidity while providing a touchable texture without the weight. It is formulated with natural and organic ingredients such as lavender flowers, leaf stem extracts, and willow bark to lock in moisture and add shine. This hair mousse is ideal for those who prefer a natural option for their hair because it contains no alcohol, preservatives, dyes, or sulfates. This one is surely a great product to add to your everyday braid routine!

  5. At Nails Uncorked, our goal is to not only help you design and build your dream nails, but to make the process easy and enjoyable for you. We are a full-service salon with a wide range of services. We offer manicures, pedicures, nail extensions, waxing, eyelash extensions, facials and many other services to give you a new nail experience. Love this place! They have the best service in Memphis and DRINKS! I have been going here for the past two years and I will not let anyone else touch my nails! The location is convenient and always surpass my standards of clean. @paintbucketnails The owners of Bella Nail Bar originally worked at another nail salon before branching out and opening their own. Located across from the Dayton Mall, this is a great place to stop on your way home from shopping to relax and get a fresh look.
    https://forum.linuxcnc.org/cb-profile/pluginclass/cbblogs?action=blogs&func=show&id=8304
    Another bob that’s really awesome for thin hair is a choppy bob. You can really have fun with the multiple layers in this look while creating texture and depth. Tousle some styling cream into your hair as you rock the messy hair look in style for effortless hold, swing, and hydration. If you struggle with hair that feels flat when styled, there are specific hairstyles for thin hair that can make your hair appear thicker. Volumizing products can also help your thin hair stay healthy and full. An experienced hair stylist can recommend tips and tricks to keep your hair and your confidence high when you leave the salon.  If you are the mother of a bride with fine locs, you want to opt for wedding updo hairstyles for thin hair like a low-upswept bun. For long-hair mamas, do a braided and romantic tucked updo looking like a fishtail for a relaxed evening. However, we also adore the rolled chignon, especially for the over 50 belles.

  6. Depois do anúncio da criação de um Centro de Negócios Bitcoin na Madeira, na sequência do deslocação do presidente do Governo Regional a Amsterdão, sabe-se que agora que Miguel Albuquerque esteve na capital da Holanda, no dia 13 de Outubro, para anunciar a ‘Bitcoin Atlantis’, uma conferência tecnológica que acontecerá na Madeira nos dias 1 a 3 de Março de 2024. Depois do anúncio da criação de um Centro de Negócios Bitcoin na Madeira, na sequência do deslocação do presidente do Governo Regional a Amsterdão, sabe-se que agora que Miguel Albuquerque esteve na capital da Holanda, no dia 13 de Outubro, para anunciar a ‘Bitcoin Atlantis’, uma conferência tecnológica que acontecerá na Madeira nos dias 1 a 3 de Março de 2024. Um casal norte-americano conseguiu salvar sua fazenda da falência vendendo NFTs – tokens não fungíveis. Com menos de US$ 1 na conta o casal enxergou na venda de NFTs a oportunidade para salvar sua…
    https://www.gedikianenterprises.com/forum/general-discussions/blog-bitcoins
    No entanto, existem alguns fatores que você pode analisar antes de escolher sua carteira de bitcoins. Por isso, faça parâmetros sobre o que seria melhor para suas transações e o que procura em uma carteira. Gerencie diretamente seu Bitcoin com a Ledger Live, nosso aplicativo desktop e móvel. Verifique seu saldo em tempo real, envie e receba seu Bitcoin e mais de 5.500 outros ativos diretamente no Ledger Live. Também pode levantar o seu dinheiro diretamente para um endereço de criptomoeda.* Uma outra forma de criar uma carteira de criptomoedas é através do Blockchain diretamente. Essa é considerada também como uma carteira oficial sendo bastante segura, com atualizações e manutenções regulares. Acessando o site é possível cadastrar um perfil e já ter acesso aos Bitcoins facilmente. Esse é um método mais fácil para quem está começando, mas vale ressaltar que não dá para comprar ou para vender, mas somente realizar transações de envio e de recebimento de moedas.

  7. High FPS Experience immersive gaming at every step in Kick & Break The Ragdoll Games with BlueStacks. Customize in-game FPS for an incredibly seamless gaming performance. Can you please make the game available to play on mac, because I purchased the game and cannot play it. Great game though (I’ve tried the online demo’s). рџ™‚ There is an ever-increasing range of arrows to unlock the more you play the game. It’s best to keep playing and switching the arrow types to learn which ones are more powerful and suit your playing style. There is everything from electric and poison to balloon and axe and you can increase your arrow slots to hold more of them at once. Buntasy is a wacky online multiplayer party game with funny ragdoll physics and a fully destructible world! Enjoy a wide variety of mini-games that you can play by yourself or online with friends. Or create any kind of map game you want inside the sandbox mode!
    https://opendata.liberec.cz/user/inkritterde1972
    Overall, the median student in the group with the games achieved a 69% as opposed to the median student in the other group who achieved a 60%—almost the difference between a 2:1 and a first in their degree. Learn how ST Math can make a difference for your students. Math Cats explore the world! Test your math skills with Math Cats games and activities. This is an interactive website that provides math explorations, trivia and classroom activities for all ages. It was created to promote open-ended and playful explorations of important math concepts and help students explore mathematics in a way that develops understanding. 4.35 million math problems solved by VF Elementary kids just this school year with First in Math. #ButterflyEffect They are planting seeds for the future in math, science, coding & finance work.

  8. When I initially commented I clicked the -Notify me when new comments are added- checkbox and now each time a remark is added I get 4 emails with the same comment. Is there any way you possibly can remove me from that service? Thanks!

  9. Thanks for your intriguing article. One other problem is that mesothelioma is generally brought on by the breathing of materials from asbestos, which is a cancer causing material. It can be commonly seen among workers in the structure industry with long contact with asbestos. It is caused by moving into asbestos protected buildings for an extended time of time, Genetics plays a huge role, and some persons are more vulnerable to the risk when compared with others.

  10. I抳e been exploring for a little for any high-quality articles or blog posts on this sort of area . Exploring in Yahoo I at last stumbled upon this website. Reading this info So i am happy to convey that I have a very good uncanny feeling I discovered exactly what I needed. I most certainly will make certain to do not forget this site and give it a look on a constant basis.

  11. I must point out my passion for your kind-heartedness in support of those people who actually need assistance with this particular area. Your special commitment to getting the message all over appeared to be amazingly invaluable and have specifically permitted most people like me to achieve their objectives. Your amazing warm and friendly facts signifies a lot to me and still more to my office colleagues. Thanks a lot; from each one of us.

  12. Can I just say what a reduction to search out someone who really knows what theyre speaking about on the internet. You positively know easy methods to convey an issue to mild and make it important. More individuals must learn this and understand this aspect of the story. I cant consider youre no more popular since you definitely have the gift.

  13. Thanks for the sensible critique. Me & my neighbor were just preparing to do some research about this. We got a grab a book from our area library but I think I learned more from this post. I am very glad to see such fantastic info being shared freely out there.

  14. Thanks , I have recently been searching for info approximately this subject for a while and yours is the greatest I have discovered so far. However, what about the conclusion? Are you certain in regards to the source?

  15. Hi there! This is kind of off topic but I need some guidance from an established blog. Is it hard to set up your own blog? I’m not very techincal but I can figure things out pretty fast. I’m thinking about setting up my own but I’m not sure where to start. Do you have any points or suggestions? Thanks

  16. Wow, fantastic weblog layout! How long have you ever been running a blog for? you make blogging look easy. The total glance of your site is magnificent, let alone the content material!

  17. Fantastic goods from you, man. I’ve understand your stuff previous to and you’re just extremely great. I really like what you’ve acquired here, really like what you are saying and the way in which you say it. You make it entertaining and you still care for to keep it sensible. I can’t wait to read far more from you. This is actually a wonderful web site.

  18. great submit, very informative. I wonder why the other specialists of this sector do not understand this. You should continue your writing. I am sure, you have a great readers’ base already!

  19. адиль и райм биография, известные люди казахстана
    нашего времени барсакелмес қорығы
    жануарлар мен өсімдіктер, қаратау қорығы өсімдік не
    арқылы тыныс алады, өсімдік тыныс алу мүшесі лептесік
    бустер алтел минуты, алтел
    казахтелеком тарифы

  20. I just could not depart your site before suggesting that I actually enjoyed the standard information a person provide for your visitors? Is gonna be back often to check up on new posts

  21. I really like your blog.. very nice colors & theme. Did you design this website yourself or did you hire someone to do it for you? Plz reply as I’m looking to design my own blog and would like to find out where u got this from. kudos

  22. I have noticed that of all different types of insurance, health insurance coverage is the most controversial because of the conflict between the insurance plan company’s necessity to remain making money and the customer’s need to have insurance coverage. Insurance companies’ profits on wellbeing plans are certainly low, consequently some companies struggle to make a profit. Thanks for the ideas you talk about through this blog.

  23. Does your site have a contact page? I’m having trouble locating it but, I’d like to shoot you an e-mail. I’ve got some ideas for your blog you might be interested in hearing. Either way, great site and I look forward to seeing it grow over time.

  24. Epoxy Resin Pipes in Iraq ElitePipe Factory stands at the forefront of producing epoxy resin pipes, known for their exceptional durability and resistance to corrosive substances. Our epoxy resin pipes are engineered to meet the rigorous demands of various industries, offering a high level of performance in applications such as water supply, sewage systems, and industrial fluid handling. The advanced technology and high-quality materials used in our manufacturing process ensure that our epoxy resin pipes deliver reliable and long-lasting service. ElitePipe Factory’s dedication to innovation and quality makes us one of the most trusted and reliable suppliers in Iraq. Discover more about our products at elitepipeiraq.com.

  25. I blog quite often and I genuinely appreciate your content.
    Your article has really peaked my interest. I am going to book mark your site and keep checking for
    new information about once per week. I opted in for your Feed too.

  26. адалдық және сыпайылық шынайы адам келбеті, сыпайылық адамгершілік айнасы
    қмж госкорпорация это, госкорпорация алматы сентябрьде уйленем скачать ремикс, сентябрьде уйленем текст аяз атага хат
    казакша, аяз атаға хат шығарма

  27. So let these words be the last on Week 18’s loss that will (hopefully) be forgotten as The One That Shall Not Be Spoken Of. But instead of playing their best football or even establishing some momentum heading into the playoffs, as they had talked about all week, the Cowboys are suddenly scrambling for answers, wondering if Sunday was a one-off anomaly… or the other shoe dropping on growing problems that have been trying to trip the team up for weeks. Multiplayer shooters seemed impossible to completely get right on console at the time, but with a few cheeky assists programmed in from the team at Rareware, Goldeneye 007, also known as Goldeneye 64, managed to become the first essential shooter. Yes, the campaign was fine and good, but competing to play as Oddjob as you race around stages shooting your friends was phenomenal. You probably shouldn’t play it now, seeing as it’s rapidly approaching 30 years old, but the impact it made on the industry can’t be understated.
    https://traviszcfe975645.theisblog.com/30078399/3d-hentai-games-pc
    Goals are scored by players shooting from angles from different areas of the pitch and from different parts of the foot. Goal scorers deserve the accolades they get because it is such a huge moment in a game. i just got one question. WHY HAS THIS IMPROVED MY AIM SO MUCH ON FPS GAMES. Thank you guys so much my friends have definitely noticed that my aim has gotten better. I told them that i have been practicing using this website they tried it and said it helped them too. Love you guys… Penalty Shooters 2 was created by 10x10games! Take ten minutes to let players open their legs up and build intensity. Lined up at one post, facing parallel to the goal, players take one touch flat across the goal-face and then strike the ball, twisting their hips to strike at a 90° angle. The purpose is simply to help players loosen their legs, open your hips and practice striking the ball itself — it doesn’t matter where the ball goes (though into the goal is preferable). After five minutes, players switch to the opposite post, to work their opposite foot.

  28. I have been exploring for a little for any high-quality
    articles or blog posts on this sort of space . Exploring in Yahoo I finally stumbled upon this website.
    Reading this info So i’m glad to show that I’ve a very
    just right uncanny feeling I came upon just what I
    needed. I most no doubt will make sure to don?t disregard this web site and provides it a glance on a continuing basis.

  29. It’s really a cool and helpful piece of info.
    I’m happy that you just shared this useful information with us.

    Please stay us up to date like this. Thanks for sharing.

  30. It is the best time to make some plans for the future and it’s time
    to be happy. I have read this post and if I could I want to suggest you some interesting things or suggestions.
    Perhaps you could write next articles referring to this article.
    I want to read more things about it!

  31. Hello there! Would you mind if I share your blog with my facebook group?
    There’s a lot of folks that I think would really
    enjoy your content. Please let me know. Many thanks

  32. What’s up to every body, it’s my first pay a visit of this weblog; this webpage carries remarkable and really excellent material designed for visitors.

  33. Howdy just wanted to give you a quick heads up. The words in your
    article seem to be running off the screen in Firefox.
    I’m not sure if this is a format issue or something to do with browser compatibility but I thought I’d post to
    let you know. The style and design look great though!
    Hope you get the issue solved soon. Cheers

  34. It’s the best time to make some plans for the future and it’s time to be happy.
    I have read this post and if I could I wish to suggest you few
    interesting things or tips. Maybe you could write next articles referring to this article.
    I wish to read more things about it!

  35. I’ve been exploring for a little for any high-quality articles or blog posts on this kind of area .
    Exploring in Yahoo I eventually stumbled upon this website.
    Reading this information So i’m happy to exhibit that I
    have an incredibly good uncanny feeling I found out exactly what I needed.
    I most certainly will make certain to don?t overlook this web site
    and provides it a look regularly.

  36. You actually make it appear really easy with your presentation however I find
    this matter to be actually one thing that I think I might
    never understand. It seems too complex and extremely vast for me.
    I’m looking ahead on your next publish, I will attempt to get
    the dangle of it!

  37. What i don’t realize is in reality how you’re not actually much more
    well-appreciated than you might be right now. You are very
    intelligent. You realize thus considerably when it comes to this
    matter, produced me personally believe it from a lot of various angles.
    Its like men and women aren’t involved unless it’s something to do with Lady gaga!
    Your personal stuffs nice. Always handle it up!

  38. Nice post. I learn something totally new and challenging on websites I stumbleupon everyday.
    It will always be interesting to read articles from other authors and practice a
    little something from other sites.

  39. Hi there, You have done a fantastic job. I’ll definitely
    digg it and personally suggest to my friends. I am confident they’ll be
    benefited from this website.

  40. My brother recommended I would possibly like this web site.
    He used to be entirely right. This submit actually made my
    day. You cann’t believe just how much time I had
    spent for this information! Thanks!

  41. I like the valuable info you provide for your articles. I’ll bookmark your weblog and test once more right here regularly.
    I’m relatively certain I will learn lots of
    new stuff proper right here! Best of luck for the next!

  42. I feel that is one of the so much significant
    information for me. And i’m glad studying your article.

    But wanna statement on few basic issues, The website style is ideal,
    the articles is truly great : D. Excellent job, cheers

  43. I am really enjoying the theme/design of your blog.
    Do you ever run into any internet browser compatibility
    problems? A small number of my blog audience
    have complained about my blog not working correctly in Explorer
    but looks great in Opera. Do you have any ideas to help
    fix this issue?

  44. Hi, I do think this is an excellent site. I stumbledupon it
    ;) I will return yet again since i have book-marked it.

    Money and freedom is the best way to change, may you be rich and continue to help others.

  45. It’s actually a great and helpful piece of information. I am glad that
    you simply shared this helpful information with us. Please stay us up to date like this.
    Thanks for sharing.

  46. I am really enjoying the theme/design of your site.
    Do you ever run into any web browser compatibility problems?
    A couple of my blog visitors have complained about my website not operating correctly in Explorer but looks great in Firefox.
    Do you have any tips to help fix this issue?

  47. Castor oil is considered the best lash oil for growth. In addition, you should pay attention to olive oil, which also helps eyelashes. Eyelash growth serum with olive oil is a safe and effective way to activate the growth of eyelashes, make them voluminous and healthy. Using the best and safest lash growth serum offers numerous benefits, including enhanced lash length, thickness, and overall lash health. These serums provide a convenient and non-invasive solution for achieving longer and fuller lashes without the need for extensions or false lashes. Whether you have naturally short lashes or want to improve the condition of your existing lashes, incorporating a quality lash growth serum into your beauty routine can help you achieve the desired results. Remember to choose a serum that is safe for your specific lash condition and follow the instructions provided for optimal results.
    https://niadd.com/article/1262774.html
    Our ultra-microfibre vegan leather material is 4X more durable than genuine leather, cruelty-free and easy to clean. Regardless of how you get to your final destination, it’s likely you’ll be stuck in a seat that’s less than ideal. Travel gadgets that claim to reduce this misery, such as compression socks, are popular. But when they take up precious luggage space for the duration of your trip—not just the flight or train ride–they need to be worth every cubic inch of space. The less you can make do with, the better off you’ll be. If you need to pack more stuff than a carry-on and a personal item can hold, our first piece of advice would be to reconsider whether you need that extra outfit “just in case.” But you’ll have times when you need to travel with several pairs of shoes, formalwear, a winter coat, special equipment (like diving or camping gear), or all of the above. In these cases, there’s no way to avoid checking a bag.

  48. Fundado em 2004, o Click Jogos é o maior portal de jogos online infantil do Brasil, oferecendo os melhores jogos online para PC, além de alternativas para curtir pelo tablet ou celular. Subway Surfers foi inspirado pelo amor por skate, grafite, cultura hip-hop, música e vida nas ruas. Você pode ver todas essas influências espalhadas pelo jogo e em cada novo mundo! Acabe com o rei e pegue a coroa dele Preste atenção aos pontos em que a câmera foca. Você deve economizar dinheiro suficiente para construir um corredor naquele local. Certifique-se de ter desbloqueado todas as barracas obrigatórias para poder abrir sua próxima filial. Desfrute de passar verdadeiro medo com este emocionante jogo baseado no famoso jogo de terror independente desenvolvido e publicado pela DVloper chamado Granny. Tente escapar do hospital sinistro onde você está preso tentando fazer o menor barulho possível!
    https://www.ag405hotel.com/bbs/board.php?bo_table=free&wr_id=970779
    Essa é uma das perguntas de um milhão de dólares, assim como: “qual a importância do nome no jogo de Free Fire?”. Primeiramente, o nome é sua apresentação e carta de entrada, o que significa que é através dele que você também causa sua primeira impressão no jogo – e a primeira impressão é a que fica, certo? Esse apelido serve então como sua identificação, sendo essa uma informação importante tanto para seus aliados como para seus inimigos. O site Free Fire Jornal criou uma ferramenta exclusiva que permite que você verifique seus nicks antigos no jogo de maneira fácil e rápida. •Caso uma compra e resgate de PIN para Free Fire tenham sido realizadas por intermédio da Garena e ou seus parceiros durante o período, o bônus não será entregue múltiplas vezes.  

  49. Heya this is kind of of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding know-how so I wanted to get guidance from someone with experience. Any help would be greatly appreciated!
    https://millionigrushek.ru/

  50. However, a new user-made clone of Only Up! built in Fortnite has quickly overshadowed the original Steam hit and become one of the most popular game modes in Fortnite, beating out modes created by Epic itself. You don’t need to keep your Nintendo Switch fully powered on downloading Fortnite after purchasing it within the eShop. The game continues to download when the console is placed in Sleep Mode. I played the video game Fortnite the other day with my teen grandson. As an educator, I’ve worked with thousands of kids with ADHD, social skills challenges, and similar challenges. And I wanted to know more about how Fortnite might affect them. The milestone in the world of online multiplayer games, FORNITE, has arrived in Miniplay. The ultimate Battle Royale, which millions of players are playing around the world right now. Here you can see hundreds of gameplays that prove it.
    https://en-web-directory.com/listings12925906/chelsea-football-club-results
    Mahjong Solitaire Refresh’s stages are set up within a grid environment. You only have a handful of stages to choose from in the beginning, so you can choose the entry level that best suits you. As you clear stages, every stage surrounding the one you finished will open up for you to play. Outside of the relaxing stages, there are two more types that will push your brain to the limit. Timed Stages will force you to finish within a strict time limit, while Extreme Stages will offer very little room for error. Naturally, you can avoid these harsher stages if you so desire, but true completionists will get a kick out of them. The challenge begins when colors that seem similar are in other designs. You should find exact pairs and match them to clear from the table and give way for other tile pairs. It will let you experience brain training challenges as the difficulty level increases. Fortunately, the game has a relaxing interface that lets you still enjoy the experience. Conquer the mahjong table and play over 1000 free levels. If you find some difficulty, use free hints to smoothen your playstyle and progress in the game.

  51. Watch free erotic movies at Free sex Watch. Explore a vast collection of sensual films and indulge in your fantasies. Enjoy high-quality streaming without any subscriptions! Free sex Watch. Enjoy free sex films and indulge in your desires with our curated selection. Watch now!

  52. تفرض الطبيعة المختلفة لنظام التشغيل iOS على بعض المنصات توفير تطبيق Aviator من خلال متاجر التطبيقات الرسمية في عدد محدود من البلدان. لذلك، اتبع الخطوات التالية لتتمكن من تنزيل Aviator على جهازك بسهولة: نحن نستخدم ملفات تعريف الارتباط لتحسين تجربة التصفح الخاصة بك. بالنقر على “قبول الكل”، أنت توافق على استخدام ملفات تعريف الارتباط. توفر المحافظ الإلكترونية معاملات سريعة وآمنة، ولكن قد يكون لها قيود على بلدان أو عملات معينة. تعتبر التحويلات المصرفية موثوقة وآمنة، ولكنها قد تستغرق وقتًا أطول للمعالجة ولها رسوم أعلى. تقدم العملة المشفرة معاملات سريعة ومجهولة، ولكنها قد تحتوي على منحنى تعليمي أعلى وأسعار صرف متقلبة. بمجرد اكتمال المعاملة، سيتم إضافة الأموال إلى حساب المستخدم 1xBet على الفور.”
    https://www.smfsimple.com/ultimateportaldemo/index.php?action=profile;area=summary;u=837849
    We also use third-party cookies that help us analyse how you use this website, store your preferences, and provide the content and advertisements that are relevant to you. These cookies will only be stored in your browser with your prior consent. This means that generally there is every chance it can cause a gambling addiction together with players. Having a few tips is excellent if you choose to put the particular demo version of Aviator to one part and play this for real funds. Having a new number of years of knowledge playing this Spribe game, I could offer some valuable hints for an individual to utilise. I’m a fan involving crash games, and even I have hence taken the time to play Aviator. Putting my information to use alongside some insightful on-line hints and suggestions, I understand the easiest way of playing the game now.

  53. Come fly with us Interconnector means a transmission line which crosses or spans a border between Member States for the purpose of connecting the national transmission system of those Member States or a transmission line between a Member State and a third country up to the territory of the Member States or the territorial sea of that Member State; The aviation industry directly borrowed the term from the maritime industry (and, originally on larger aircraft, did the same with term navigator). Usage in the aviation industry these days has shifted a bit though, with the term these days almost always indicating someone who is licensed to fly an aircraft, as well as generally being used to refer to the officer in command of a flight crew for an aircraft (with others responsible for flying the aircraft being known as co-pilots). When it needs to be unambiguous, this sense is usually called an ‘aircraft pilot’, though it may be further qualified by the type of aircraft the pilot normally flies (for example ‘fighter pilot’, ‘cargo pilot’, or ‘bomber pilot’).
    http://qooh.me/httpsingames
    2 : Shark Aviator Predictor  Imagine having a trusty co-pilot by your side, guiding you through the turbulent skies of the Aviator game. That’s precisely what Aviator Predictor promises to be – a prediction tool designed to help you navigate the game’s uncertainties. Developed by the wizards at MobisMobis, this free-to-use app offers approximate predictions of when the plane might “crash,” giving you an edge in your quest for victory. Joining the fun with Aviator Predictor v12.0.5 is a breeze. Accept our terms of use, register, and open an account on the listed websites. It’s that simple! 2 : Shark Aviator Predictor  eFootball PES 2021 Android: A free realistic football game Five simple steps to acquire the Aviator Predictor Signal app. Learn more about how to start using Predictor Aviator v4.0 today.

Leave a Reply

Your email address will not be published. Required fields are marked *