Skip to content

Commit 09d0ff0

Browse files
authored
cat-identifier: fix probability edge (#9)
1 parent 1da31b6 commit 09d0ff0

File tree

20 files changed

+353
-152
lines changed

20 files changed

+353
-152
lines changed

.github/workflows/CI-CD_digit-recognition-frontend.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ jobs:
8080
VITE_ETH_NODE_ADDRESS=${{ secrets.VITE_ETH_NODE_ADDRESS }}
8181
VITE_CONTRACT_ADDRESS_DIGIT_RECOGNITION=${{ secrets.VITE_CONTRACT_ADDRESS_DIGIT_RECOGNITION }}
8282
VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER=${{ secrets.VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER }}
83+
VITE_PROBABILITY_THRESHOLD_CAT_IDENTIFIER=${{ secrets.VITE_PROBABILITY_THRESHOLD_CAT_IDENTIFIER }}
8384
tags: ${{ needs.prepair.outputs.image_name }}
8485

8586
deploy-to-k8s:

digit-recognition/frontend/.env.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ VITE_WALLET_CONNECT_PROJECT_ID=
22
VITE_GEAR_API_NODE=
33
VITE_ETH_NODE_ADDRESS=
44
VITE_CONTRACT_ADDRESS_DIGIT_RECOGNITION=
5-
VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER=
5+
VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER=
6+
VITE_PROBABILITY_THRESHOLD_CAT_IDENTIFIER=0.01

digit-recognition/frontend/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ ARG VITE_WALLET_CONNECT_PROJECT_ID \
1414
VITE_GEAR_API_NODE \
1515
VITE_ETH_NODE_ADDRESS \
1616
VITE_CONTRACT_ADDRESS_DIGIT_RECOGNITION \
17-
VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER
17+
VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER \
18+
VITE_PROBABILITY_THRESHOLD_CAT_IDENTIFIER
1819

1920
ENV VITE_WALLET_CONNECT_PROJECT_ID=${VITE_WALLET_CONNECT_PROJECT_ID} \
2021
VITE_CONTRACT_ADDRESS_DIGIT_RECOGNITION=${VITE_CONTRACT_ADDRESS_DIGIT_RECOGNITION} \
2122
VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER=${VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER} \
23+
VITE_PROBABILITY_THRESHOLD_CAT_IDENTIFIER=${VITE_PROBABILITY_THRESHOLD_CAT_IDENTIFIER} \
2224
VITE_GEAR_API_NODE=${VITE_GEAR_API_NODE} \
2325
VITE_ETH_NODE_ADDRESS=${VITE_ETH_NODE_ADDRESS} \
2426
DISABLE_ESLINT_PLUGIN=true

digit-recognition/frontend/src/components/ui/card/Card.module.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
}
1515

1616
.title {
17-
color: #a8f593;
17+
color: #fff;
1818
text-transform: uppercase;
1919
font-size: 12px;
2020
}
Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
import { HexString } from "@/lib/types";
22

3-
export const PROJECT_ID = import.meta.env
4-
.VITE_WALLET_CONNECT_PROJECT_ID as string;
5-
export const GEAR_API_NODE = import.meta.env.VITE_GEAR_API_NODE as string;
6-
export const ETH_CHAIN_ID = 17000; // (0x4268) Holesky
7-
export const ETH_NODE_ADDRESS = import.meta.env.VITE_ETH_NODE_ADDRESS;
3+
const PROJECT_ID = import.meta.env.VITE_WALLET_CONNECT_PROJECT_ID as string;
4+
const GEAR_API_NODE = import.meta.env.VITE_GEAR_API_NODE as string;
5+
const ETH_CHAIN_ID = 17000; // (0x4268) Holesky
6+
const ETH_NODE_ADDRESS = import.meta.env.VITE_ETH_NODE_ADDRESS;
87

9-
export const DIGIT_RECOGNITION_CONTRACT_ADDRESS = import.meta.env
8+
const DIGIT_RECOGNITION_CONTRACT_ADDRESS = import.meta.env
109
.VITE_CONTRACT_ADDRESS_DIGIT_RECOGNITION as HexString;
11-
export const CAT_IDENTIFIER_CONTRACT_ADDRESS = import.meta.env
10+
const CAT_IDENTIFIER_CONTRACT_ADDRESS = import.meta.env
1211
.VITE_CONTRACT_ADDRESS_CAT_IDENTIFIER as HexString;
12+
const PROBABILITY_THRESHOLD_CAT_IDENTIFIER = Number(
13+
import.meta.env.VITE_PROBABILITY_THRESHOLD_CAT_IDENTIFIER
14+
);
15+
16+
export {
17+
PROJECT_ID,
18+
GEAR_API_NODE,
19+
ETH_CHAIN_ID,
20+
ETH_NODE_ADDRESS,
21+
DIGIT_RECOGNITION_CONTRACT_ADDRESS,
22+
CAT_IDENTIFIER_CONTRACT_ADDRESS,
23+
PROBABILITY_THRESHOLD_CAT_IDENTIFIER,
24+
};

digit-recognition/frontend/src/features/cat-identifier/CatIdentifier.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { handleImageToPixels } from "./utils";
44
import { useReadRpcState } from "./api/readRpcState";
55
import { getFloatingPoint } from "@/lib/utils";
66
import { useCatsPredictPredict } from "./api/useCatsPredictPredict";
7-
import { PROBABILITY_EDGE } from "./consts";
7+
import { PROBABILITY_THRESHOLD_CAT_IDENTIFIER } from "@/consts";
88
import styles from "./CatIdentifier.module.scss";
99

1010
export const CatIdentifier = () => {
@@ -30,6 +30,7 @@ export const CatIdentifier = () => {
3030
isSubmited && rpcState && rpcState.calculated
3131
? getFloatingPoint(rpcState.probability)
3232
: null;
33+
console.log("CatIdentifier probability:", probability);
3334

3435
const isPending = rpcStatePending || isSubmiting;
3536

@@ -42,9 +43,11 @@ export const CatIdentifier = () => {
4243
<div>
4344
Cat in the image:{" "}
4445
<span className={styles.result}>
45-
{probability < PROBABILITY_EDGE ? "recognized" : "not recognized "}
46+
{probability >= PROBABILITY_THRESHOLD_CAT_IDENTIFIER
47+
? "recognized"
48+
: "not recognized"}
4649
</span>{" "}
47-
(confidence score {((1 - probability) * 100).toFixed(2)}%).
50+
(confidence score {(probability * 100).toFixed(2)}%).
4851
</div>
4952
);
5053
})();

digit-recognition/frontend/src/features/cat-identifier/api/readRpcState.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { TypeRegistry } from "@polkadot/types";
2+
import { RegistryTypes } from "@polkadot/types/types";
23
import { useQuery } from "@tanstack/react-query";
34
import { useReadContract, useWatchContractEvent } from "wagmi";
45

@@ -7,11 +8,12 @@ import { catDogIdentifierAbi } from "./catDogIdentifierAbi";
78
import { CAT_IDENTIFIER_CONTRACT_ADDRESS, GEAR_API_NODE } from "@/consts";
89
import { CalcResult } from "../types";
910
import { mirrorAbi } from "./mirrorAbi";
11+
import { retryWhileDataChanged } from "@/lib/utils";
1012

1113
export const readRpcState = async (mirrorId?: HexString) => {
1214
if (!mirrorId) return;
1315

14-
const types: Record<string, any> = {
16+
const types: RegistryTypes = {
1517
FixedPoint: { num: "i128", scale: "u32" },
1618
CalcResult: {
1719
probability: "FixedPoint",
@@ -57,7 +59,7 @@ export const readRpcState = async (mirrorId?: HexString) => {
5759
json.result.payload
5860
);
5961

60-
let data = result[2].toJSON() as unknown as CalcResult;
62+
const data = result[2].toJSON() as unknown as CalcResult;
6163

6264
return data;
6365
};
@@ -85,13 +87,9 @@ export const useReadRpcState = ({ isSubmiting, onSuccess }: Params) => {
8587
eventName: "StateChanged",
8688
address: mirrorId as HexString,
8789
onLogs() {
88-
if (isSubmiting) {
89-
console.log("success reply");
90-
onSuccess();
91-
refetch();
92-
}
90+
retryWhileDataChanged({ data, refetch }).then(() => onSuccess());
9391
},
94-
enabled: !!mirrorId,
92+
enabled: !!mirrorId && isSubmiting,
9593
});
9694

9795
return {

digit-recognition/frontend/src/features/cat-identifier/consts.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

digit-recognition/frontend/src/features/digit-recognizer/DigitCanvas.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const DigitCanvas = ({
4343
ctx.imageSmoothingEnabled = true;
4444
}
4545
}
46+
// eslint-disable-next-line react-hooks/exhaustive-deps
4647
}, []);
4748

4849
const startDrawing = (e: React.MouseEvent) => {

digit-recognition/frontend/src/features/digit-recognizer/DigitRecognizer.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Button, Card } from "@/components";
22
import { DigitCanvas } from "./DigitCanvas";
3-
import { useRef, useState } from "react";
3+
import { useEffect, useRef, useState } from "react";
44
import { findMaxIndex, getFlattenedPixelArray } from "./utils";
55
import { useDigitRecognitionPredict } from "./api/useDigitRecognitionPredict";
66
import { useReadRpcState } from "./api/readRpcState";
@@ -52,11 +52,21 @@ export const DigitRecognizer = () => {
5252
: findMaxIndex(rpcState.map(getFloatingPoint));
5353

5454
const predictedDigit = isSubmited ? currentState : null;
55-
console.log("current state:", currentState);
55+
56+
useEffect(() => {
57+
console.log(
58+
"current state:",
59+
currentState,
60+
rpcState?.map(getFloatingPoint),
61+
rpcState
62+
);
63+
// eslint-disable-next-line react-hooks/exhaustive-deps
64+
}, []);
5665

5766
const onSubmit = () => {
5867
setIsSubmiting(true);
5968
const flattenedPixelArray = getFlattenedPixelArray(canvasRef);
69+
console.log("flattenedPixelArray:", flattenedPixelArray.join(", "));
6070
digitRecognitionPredict(flattenedPixelArray);
6171
};
6272

0 commit comments

Comments
 (0)