Skip to content

Commit cf16a15

Browse files
committed
chore(apps): destructure heavily-used \models\ groups for readability
Per Kuba's review on #1148 — hoist a camelCase alias for any group used ≥ 2 times in a file, e.g. const instanceSegmentation = models.instance_segmentation; const objectDetection = models.object_detection; Then \`models.instance_segmentation.yolo26n_seg()\` becomes \`instanceSegmentation.yolo26n_seg()\`. Applied to 14 files where it actually reduces noise. Skips aliasing when the camelCase name would shadow an existing local identifier — common in the LLM/STT/embeddings screens where \`llm\`, \`speechToText\`, \`imageEmbedding\` etc. already name hook return values or temporaries.
1 parent b7be456 commit cf16a15

14 files changed

Lines changed: 122 additions & 112 deletions

File tree

apps/computer-vision/app/classification/index.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ import {
66
ClassificationModelSources,
77
} from 'react-native-executorch';
88
import { ModelPicker, ModelOption } from '../../components/ModelPicker';
9+
const classification = models.classification;
910

1011
const MODELS: ModelOption<ClassificationModelSources>[] = [
1112
{
1213
label: 'EfficientNet V2 S Quantized',
13-
value: models.classification.efficientnet_v2_s(),
14+
value: classification.efficientnet_v2_s(),
1415
},
1516
{
1617
label: 'EfficientNet V2 S',
17-
value: models.classification.efficientnet_v2_s({ quant: false }),
18+
value: classification.efficientnet_v2_s({ quant: false }),
1819
},
1920
];
2021
import { View, StyleSheet, Image, Text, ScrollView } from 'react-native';
@@ -27,9 +28,7 @@ import ErrorBanner from '../../components/ErrorBanner';
2728

2829
export default function ClassificationScreen() {
2930
const [selectedModel, setSelectedModel] =
30-
useState<ClassificationModelSources>(
31-
models.classification.efficientnet_v2_s()
32-
);
31+
useState<ClassificationModelSources>(classification.efficientnet_v2_s());
3332
const [results, setResults] = useState<{ label: string; score: number }[]>(
3433
[]
3534
);

apps/computer-vision/app/instance_segmentation/index.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,27 @@ import ImageWithMasks, {
2222
DisplayInstance,
2323
} from '../../components/ImageWithMasks';
2424
import { StatsBar } from '../../components/StatsBar';
25+
const instanceSegmentation = models.instance_segmentation;
26+
const objectDetection = models.object_detection;
2527

2628
const MODELS: ModelOption<InstanceSegmentationModelSources>[] = [
27-
{ label: 'Yolo26N', value: models.instance_segmentation.yolo26n_seg() },
28-
{ label: 'Yolo26S', value: models.instance_segmentation.yolo26s_seg() },
29-
{ label: 'Yolo26M', value: models.instance_segmentation.yolo26m_seg() },
30-
{ label: 'Yolo26L', value: models.instance_segmentation.yolo26l_seg() },
31-
{ label: 'Yolo26X', value: models.instance_segmentation.yolo26x_seg() },
29+
{ label: 'Yolo26N', value: instanceSegmentation.yolo26n_seg() },
30+
{ label: 'Yolo26S', value: instanceSegmentation.yolo26s_seg() },
31+
{ label: 'Yolo26M', value: instanceSegmentation.yolo26m_seg() },
32+
{ label: 'Yolo26L', value: instanceSegmentation.yolo26l_seg() },
33+
{ label: 'Yolo26X', value: instanceSegmentation.yolo26x_seg() },
3234
{
3335
label: 'RF-DeTR Nano',
34-
value: models.instance_segmentation.rf_detr_nano_seg(),
36+
value: instanceSegmentation.rf_detr_nano_seg(),
3537
},
36-
{ label: 'FastSAM-S', value: models.object_detection.fastsam_s() },
37-
{ label: 'FastSAM-X', value: models.object_detection.fastsam_x() },
38+
{ label: 'FastSAM-S', value: objectDetection.fastsam_s() },
39+
{ label: 'FastSAM-X', value: objectDetection.fastsam_x() },
3840
];
3941

4042
export default function InstanceSegmentationScreen() {
4143
const [selectedModel, setSelectedModel] =
4244
useState<InstanceSegmentationModelSources>(
43-
models.instance_segmentation.yolo26n_seg()
45+
instanceSegmentation.yolo26n_seg()
4446
);
4547
const [inferenceTime, setInferenceTime] = useState<number | null>(null);
4648

apps/computer-vision/app/object_detection/index.tsx

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,22 @@ import React, { useContext, useEffect, useState } from 'react';
1414
import { GeneratingContext } from '../../context';
1515
import ScreenWrapper from '../../ScreenWrapper';
1616
import { StatsBar } from '../../components/StatsBar';
17+
const objectDetection = models.object_detection;
1718

1819
const MODELS: ModelOption<ObjectDetectionModelSources>[] = [
1920
{
2021
label: 'RF-DeTR Nano',
21-
value: models.object_detection.rf_detr_nano(),
22+
value: objectDetection.rf_detr_nano(),
2223
},
2324
{
2425
label: 'SSDLite MobileNet',
25-
value: models.object_detection.ssdlite_320_mobilenet_v3_large(),
26+
value: objectDetection.ssdlite_320_mobilenet_v3_large(),
2627
},
27-
{ label: 'YOLO26N', value: models.object_detection.yolo26n() },
28-
{ label: 'YOLO26S', value: models.object_detection.yolo26s() },
29-
{ label: 'YOLO26M', value: models.object_detection.yolo26m() },
30-
{ label: 'YOLO26L', value: models.object_detection.yolo26l() },
31-
{ label: 'YOLO26X', value: models.object_detection.yolo26x() },
28+
{ label: 'YOLO26N', value: objectDetection.yolo26n() },
29+
{ label: 'YOLO26S', value: objectDetection.yolo26s() },
30+
{ label: 'YOLO26M', value: objectDetection.yolo26m() },
31+
{ label: 'YOLO26L', value: objectDetection.yolo26l() },
32+
{ label: 'YOLO26X', value: objectDetection.yolo26x() },
3233
];
3334
import ErrorBanner from '../../components/ErrorBanner';
3435

@@ -41,9 +42,7 @@ export default function ObjectDetectionScreen() {
4142
height: number;
4243
}>();
4344
const [selectedModel, setSelectedModel] =
44-
useState<ObjectDetectionModelSources>(
45-
models.object_detection.rf_detr_nano()
46-
);
45+
useState<ObjectDetectionModelSources>(objectDetection.rf_detr_nano());
4746
const [inferenceTime, setInferenceTime] = useState<number | null>(null);
4847

4948
const model = useObjectDetection({ model: selectedModel });

apps/computer-vision/app/segment_anything/index.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,20 @@ import ImageWithMasks, {
4545
} from '../../components/ImageWithMasks';
4646
import { getImage } from '../../utils';
4747
import ColorPalette from '../../colors';
48+
const objectDetection = models.object_detection;
4849

4950
type PromptMode = 'point' | 'box' | 'text';
5051

5152
const MODELS: ModelOption<InstanceSegmentationModelSources>[] = [
52-
{ label: 'FastSAM-S', value: models.object_detection.fastsam_s() },
53-
{ label: 'FastSAM-X', value: models.object_detection.fastsam_x() },
53+
{ label: 'FastSAM-S', value: objectDetection.fastsam_s() },
54+
{ label: 'FastSAM-X', value: objectDetection.fastsam_x() },
5455
];
5556

5657
export default function SegmentAnythingScreen() {
5758
const { setGlobalGenerating } = useContext(GeneratingContext);
5859

5960
const [selectedModel, setSelectedModel] =
60-
useState<InstanceSegmentationModelSources>(
61-
models.object_detection.fastsam_s()
62-
);
61+
useState<InstanceSegmentationModelSources>(objectDetection.fastsam_s());
6362
const [mode, setMode] = useState<PromptMode>('point');
6463
const [inferenceTime, setInferenceTime] = useState<number | null>(null);
6564

apps/computer-vision/app/semantic_segmentation/index.tsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { GeneratingContext } from '../../context';
2121
import ScreenWrapper from '../../ScreenWrapper';
2222
import { StatsBar } from '../../components/StatsBar';
2323
import ErrorBanner from '../../components/ErrorBanner';
24+
const semanticSegmentation = models.semantic_segmentation;
2425

2526
const numberToColor: number[][] = [
2627
[255, 87, 51], // 0 Red
@@ -49,39 +50,39 @@ const numberToColor: number[][] = [
4950
const MODELS: ModelOption<SemanticSegmentationModelSources>[] = [
5051
{
5152
label: 'DeepLab MobileNet',
52-
value: models.semantic_segmentation.deeplab_v3_mobilenet_v3_large(),
53+
value: semanticSegmentation.deeplab_v3_mobilenet_v3_large(),
5354
},
5455
{
5556
label: 'DeepLab ResNet50',
56-
value: models.semantic_segmentation.deeplab_v3_resnet50(),
57+
value: semanticSegmentation.deeplab_v3_resnet50(),
5758
},
5859
{
5960
label: 'DeepLab ResNet101',
60-
value: models.semantic_segmentation.deeplab_v3_resnet101(),
61+
value: semanticSegmentation.deeplab_v3_resnet101(),
6162
},
6263
{
6364
label: 'LRASPP MobileNet',
64-
value: models.semantic_segmentation.lraspp_mobilenet_v3_large(),
65+
value: semanticSegmentation.lraspp_mobilenet_v3_large(),
6566
},
6667
{
6768
label: 'FCN ResNet50',
68-
value: models.semantic_segmentation.fcn_resnet50(),
69+
value: semanticSegmentation.fcn_resnet50(),
6970
},
7071
{
7172
label: 'FCN ResNet101',
72-
value: models.semantic_segmentation.fcn_resnet101(),
73+
value: semanticSegmentation.fcn_resnet101(),
7374
},
7475
{
7576
label: 'Selfie Segmentation',
76-
value: models.semantic_segmentation.selfie_segmentation(),
77+
value: semanticSegmentation.selfie_segmentation(),
7778
},
7879
];
7980

8081
export default function SemanticSegmentationScreen() {
8182
const { setGlobalGenerating } = useContext(GeneratingContext);
8283
const [selectedModel, setSelectedModel] =
8384
useState<SemanticSegmentationModelSources>(
84-
models.semantic_segmentation.deeplab_v3_mobilenet_v3_large()
85+
semanticSegmentation.deeplab_v3_mobilenet_v3_large()
8586
);
8687

8788
const {

apps/computer-vision/app/style_transfer/index.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,27 @@ import React, { useContext, useEffect, useState } from 'react';
1515
import { GeneratingContext } from '../../context';
1616
import ScreenWrapper from '../../ScreenWrapper';
1717
import { StatsBar } from '../../components/StatsBar';
18+
const styleTransfer = models.style_transfer;
1819

1920
type StyleTransferModelSources = {
2021
modelName: StyleTransferModelName;
2122
modelSource: ResourceSource;
2223
};
2324

2425
const MODELS: ModelOption<StyleTransferModelSources>[] = [
25-
{ label: 'Candy', value: models.style_transfer.candy() },
26-
{ label: 'Mosaic', value: models.style_transfer.mosaic() },
26+
{ label: 'Candy', value: styleTransfer.candy() },
27+
{ label: 'Mosaic', value: styleTransfer.mosaic() },
2728
{
2829
label: 'Rain Princess',
29-
value: models.style_transfer.rain_princess(),
30+
value: styleTransfer.rain_princess(),
3031
},
31-
{ label: 'Udnie', value: models.style_transfer.udnie() },
32+
{ label: 'Udnie', value: styleTransfer.udnie() },
3233
];
3334
import ErrorBanner from '../../components/ErrorBanner';
3435

3536
export default function StyleTransferScreen() {
3637
const [selectedModel, setSelectedModel] = useState<StyleTransferModelSources>(
37-
models.style_transfer.candy()
38+
styleTransfer.candy()
3839
);
3940

4041
const model = useStyleTransfer({ model: selectedModel });

apps/computer-vision/app/text_to_image/index.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,18 @@ import ProgressBar from '../../components/ProgressBar';
2525
import { Ionicons } from '@expo/vector-icons';
2626
import { StatsBar } from '../../components/StatsBar';
2727
import ErrorBanner from '../../components/ErrorBanner';
28+
const imageGeneration = models.image_generation;
2829

2930
type TextToImageModelSources = TextToImageProps['model'];
3031

3132
const MODELS: ModelOption<TextToImageModelSources>[] = [
3233
{
3334
label: 'BK-SDM 256',
34-
value: models.image_generation.bk_sdm_tiny_vpred_256(),
35+
value: imageGeneration.bk_sdm_tiny_vpred_256(),
3536
},
3637
{
3738
label: 'BK-SDM 512',
38-
value: models.image_generation.bk_sdm_tiny_vpred_512(),
39+
value: imageGeneration.bk_sdm_tiny_vpred_512(),
3940
},
4041
];
4142

@@ -47,7 +48,7 @@ export default function TextToImageScreen() {
4748

4849
const [input, setInput] = useState('');
4950
const [selectedModel, setSelectedModel] = useState<TextToImageModelSources>(
50-
models.image_generation.bk_sdm_tiny_vpred_256()
51+
imageGeneration.bk_sdm_tiny_vpred_256()
5152
);
5253
const [generationTime, setGenerationTime] = useState<number | null>(null);
5354

apps/computer-vision/components/vision_camera/tasks/InstanceSegmentationTask.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import {
1717
buildDisplayInstances,
1818
DisplayInstance,
1919
} from '../../../components/ImageWithMasks';
20+
const instanceSegmentation = models.instance_segmentation;
21+
const objectDetection = models.object_detection;
2022

2123
type InstSegModelId =
2224
| 'instanceSegmentationYolo26n'
@@ -39,19 +41,19 @@ export default function InstanceSegmentationTask({
3941
onErrorChange,
4042
}: Props) {
4143
const yolo26n = useInstanceSegmentation({
42-
model: models.instance_segmentation.yolo26n_seg(),
44+
model: instanceSegmentation.yolo26n_seg(),
4345
preventLoad: activeModel !== 'instanceSegmentationYolo26n',
4446
});
4547
const rfdetr = useInstanceSegmentation({
46-
model: models.instance_segmentation.rf_detr_nano_seg(),
48+
model: instanceSegmentation.rf_detr_nano_seg(),
4749
preventLoad: activeModel !== 'instanceSegmentationRfdetr',
4850
});
4951
const fastsamS = useInstanceSegmentation({
50-
model: models.object_detection.fastsam_s(),
52+
model: objectDetection.fastsam_s(),
5153
preventLoad: activeModel !== 'instanceSegmentationFastsamS',
5254
});
5355
const fastsamX = useInstanceSegmentation({
54-
model: models.object_detection.fastsam_x(),
56+
model: objectDetection.fastsam_x(),
5557
preventLoad: activeModel !== 'instanceSegmentationFastsamX',
5658
});
5759

apps/computer-vision/components/vision_camera/tasks/ObjectDetectionTask.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from 'react-native-executorch';
1212
import BoundingBoxes from '../../BoundingBoxes';
1313
import { FRAME_TARGET_RESOLUTION, TaskProps } from './types';
14+
const objectDetection = models.object_detection;
1415

1516
type ObjModelId =
1617
| 'objectDetectionSsdlite'
@@ -32,15 +33,15 @@ export default function ObjectDetectionTask({
3233
onErrorChange,
3334
}: Props) {
3435
const ssdlite = useObjectDetection({
35-
model: models.object_detection.ssdlite_320_mobilenet_v3_large(),
36+
model: objectDetection.ssdlite_320_mobilenet_v3_large(),
3637
preventLoad: activeModel !== 'objectDetectionSsdlite',
3738
});
3839
const rfdetr = useObjectDetection({
39-
model: models.object_detection.rf_detr_nano(),
40+
model: objectDetection.rf_detr_nano(),
4041
preventLoad: activeModel !== 'objectDetectionRfdetr',
4142
});
4243
const yolo26n = useObjectDetection({
43-
model: models.object_detection.yolo26n(),
44+
model: objectDetection.yolo26n(),
4445
preventLoad: activeModel !== 'objectDetectionYolo26n',
4546
});
4647

apps/computer-vision/components/vision_camera/tasks/SegmentationTask.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
} from '@shopify/react-native-skia';
1414
import { CLASS_COLORS } from '../../utils/colors';
1515
import { FRAME_TARGET_RESOLUTION, TaskProps } from './types';
16+
const semanticSegmentation = models.semantic_segmentation;
1617

1718
type SegModelId =
1819
| 'segmentationDeeplabResnet50'
@@ -38,31 +39,31 @@ export default function SegmentationTask({
3839
onErrorChange,
3940
}: Props) {
4041
const segDeeplabResnet50 = useSemanticSegmentation({
41-
model: models.semantic_segmentation.deeplab_v3_resnet50(),
42+
model: semanticSegmentation.deeplab_v3_resnet50(),
4243
preventLoad: activeModel !== 'segmentationDeeplabResnet50',
4344
});
4445
const segDeeplabResnet101 = useSemanticSegmentation({
45-
model: models.semantic_segmentation.deeplab_v3_resnet101(),
46+
model: semanticSegmentation.deeplab_v3_resnet101(),
4647
preventLoad: activeModel !== 'segmentationDeeplabResnet101',
4748
});
4849
const segDeeplabMobilenet = useSemanticSegmentation({
49-
model: models.semantic_segmentation.deeplab_v3_mobilenet_v3_large(),
50+
model: semanticSegmentation.deeplab_v3_mobilenet_v3_large(),
5051
preventLoad: activeModel !== 'segmentationDeeplabMobilenet',
5152
});
5253
const segLraspp = useSemanticSegmentation({
53-
model: models.semantic_segmentation.lraspp_mobilenet_v3_large(),
54+
model: semanticSegmentation.lraspp_mobilenet_v3_large(),
5455
preventLoad: activeModel !== 'segmentationLraspp',
5556
});
5657
const segFcnResnet50 = useSemanticSegmentation({
57-
model: models.semantic_segmentation.fcn_resnet50(),
58+
model: semanticSegmentation.fcn_resnet50(),
5859
preventLoad: activeModel !== 'segmentationFcnResnet50',
5960
});
6061
const segFcnResnet101 = useSemanticSegmentation({
61-
model: models.semantic_segmentation.fcn_resnet101(),
62+
model: semanticSegmentation.fcn_resnet101(),
6263
preventLoad: activeModel !== 'segmentationFcnResnet101',
6364
});
6465
const segSelfie = useSemanticSegmentation({
65-
model: models.semantic_segmentation.selfie_segmentation(),
66+
model: semanticSegmentation.selfie_segmentation(),
6667
preventLoad: activeModel !== 'segmentationSelfie',
6768
});
6869

0 commit comments

Comments
 (0)