fastai-图像分割的多类指标

时间:2019-11-19 20:11:35

标签: python computer-vision image-segmentation torch fast-ai

我目前正在探索如何将Dice指标应用于fastai的多类细分问题。我检查了概念,发现Dice确实与F1Score相似。在此之后,我对它们在fastai.metrics中的实现有两个疑问:

  • namespace App\Tests\Service; use App\Repository\ProductRepository; use App\Service\ProductService; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Validator\Validator\ValidatorInterface; class ProductServiceTest extends KernelTestCase { /** * Create product test */ public function testCreateProduct(): void { // We load the kernel here (and $container) self::bootKernel(); $productData = [ 'name' => 'foo', 'quantity' => 1, 'sku' => 'bar', ]; $productRepository = static::$container->get('doctrine')->getRepository(ProductRepository::class); $entityManager = static::$container->get('doctrine')->getManager(); // Here we mock the validator. $validator = $this->getMockBuilder(ValidatorInterface::class) ->disableOriginalConstructor() ->setMethods(['validate']) ->getMock(); $validator->expects($this->once()) ->method('validate') ->willReturn(null); $productService = new ProductService($productRepository, $entityManager, $validator); $productFromMethod = $productService->createProduct($productData); // Here is you assertions: $this->assertSame($productData['name'], $productFromMethod->getName()); $this->assertSame($productData['quantity'], $productFromMethod->getQuantity()); $this->assertSame($productData['sku'], $productFromMethod->getSku()); $productFromDB = $productRepository->findOneBy(['name' => $productData['name']]); // Here we test that product in DB and returned product are same $this->assertSame($productFromDB, $productFromMethod); } } dice()的输出有何不同?
  • 对于多标签图像分割用例,fbeta(beta=1)类还可以吗?
  • 如果没有,是否存在可以帮助我的指标?

非常感谢,祝您有美好的一天!

1 个答案:

答案 0 :(得分:1)

1)Dice指标通常应等于FBeta(beta = 1)。根据框架的不同,实现可能会略有不同。但是,由于它们本质上非常相似,因此它们可以互换用作您的问题的指标。

2)如果您有多个重叠的蒙版,则可以使用MultiLabelFBeta。也就是说,如果您的细分标签不是互斥的。

例如,狗和猫的像素相互排斥(即,属于猫的像素将永远不属于狗,反之亦然)。但是,如果您同时拥有“ T恤”和“人类”两类,那么您显然重叠了:人们穿着T恤,因此属于T恤的像素很可能属于人类。 / p>

3)注意术语! MultiLabel与MultiClass不同。如果是后者,则标签是互斥的;如果是前者,则不是(T恤+人类示例)。

如果您遇到多类别细分问题,则Dice / FBeta是相关指标。如果您遇到多标签细分问题,那么MultiLabelFbeta是一个很好的指标。