Skip to content

Commit ea1b701

Browse files
authored
Add support for different RKNN YOLO models in the backend (#1205)
1 parent 62112cd commit ea1b701

File tree

6 files changed

+14
-9
lines changed

6 files changed

+14
-9
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ ext {
3030
joglVersion = "2.4.0-rc-20200307"
3131
javalinVersion = "5.6.2"
3232
photonGlDriverLibVersion = "dev-v2023.1.0-9-g75fc678"
33-
rknnVersion = "dev-v2024.0.0-30-g001b5ec"
33+
rknnVersion = "dev-v2024.0.0-64-gc0836a6"
3434
frcYear = "2024"
3535
mrcalVersion = "dev-v2024.0.0-7-gc976aaa";
3636

photon-core/build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@ dependencies {
3737
implementation 'org.zeroturnaround:zt-zip:1.14'
3838

3939
implementation "org.xerial:sqlite-jdbc:3.41.0.0"
40-
def rknnjniversion = "dev-v2024.0.0-44-g8022c40"
41-
implementation "org.photonvision:rknn_jni-jni:$rknnjniversion:linuxarm64"
42-
implementation "org.photonvision:rknn_jni-java:$rknnjniversion"
40+
implementation "org.photonvision:rknn_jni-jni:$rknnVersion:linuxarm64"
41+
implementation "org.photonvision:rknn_jni-java:$rknnVersion"
4342
implementation "org.photonvision:photon-libcamera-gl-driver-jni:$photonGlDriverLibVersion:linuxarm64"
4443
implementation "org.photonvision:photon-libcamera-gl-driver-java:$photonGlDriverLibVersion"
4544

photon-core/src/main/java/org/photonvision/common/configuration/NeuralNetworkModelManager.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
import java.util.List;
2626
import org.photonvision.common.logging.LogGroup;
2727
import org.photonvision.common.logging.Logger;
28+
import org.photonvision.rknn.RknnJNI;
2829

2930
public class NeuralNetworkModelManager {
3031
private static NeuralNetworkModelManager INSTANCE;
3132
private static final Logger logger = new Logger(NeuralNetworkModelManager.class, LogGroup.Config);
3233

3334
private final String MODEL_NAME = "note-640-640-yolov5s.rknn";
35+
private final RknnJNI.ModelVersion modelVersion = RknnJNI.ModelVersion.YOLO_V5;
3436
private File defaultModelFile;
3537
private List<String> labels;
3638

@@ -51,7 +53,7 @@ public void initialize(File modelsFolder) {
5153
this.defaultModelFile = new File(modelsFolder, MODEL_NAME);
5254
extractResource(modelResourcePath, defaultModelFile);
5355

54-
File labelsFile = new File(modelsFolder, "labels.txt");
56+
File labelsFile = new File(modelsFolder, "labels_v5.txt");
5557
var labelResourcePath = "/models/" + labelsFile.getName();
5658
extractResource(labelResourcePath, labelsFile);
5759

@@ -95,4 +97,8 @@ public File getDefaultRknnModel() {
9597
public List<String> getLabels() {
9698
return labels;
9799
}
100+
101+
public RknnJNI.ModelVersion getModelVersion() {
102+
return modelVersion;
103+
}
98104
}

photon-core/src/main/java/org/photonvision/jni/RknnDetectorJNI.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,11 @@ public static class RknnObjectDetector {
6565
long objPointer = -1;
6666
private List<String> labels;
6767
private final Object lock = new Object();
68-
6968
private static final CopyOnWriteArrayList<Long> detectors = new CopyOnWriteArrayList<>();
7069

71-
public RknnObjectDetector(String modelPath, List<String> labels) {
70+
public RknnObjectDetector(String modelPath, List<String> labels, RknnJNI.ModelVersion version) {
7271
synchronized (lock) {
73-
objPointer = RknnJNI.create(modelPath, labels.size());
72+
objPointer = RknnJNI.create(modelPath, labels.size(), version.ordinal(), -1);
7473
detectors.add(objPointer);
7574
System.out.println(
7675
"Created " + objPointer + "! Detectors: " + Arrays.toString(detectors.toArray()));

photon-core/src/main/java/org/photonvision/vision/pipe/impl/RknnDetectionPipe.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ public RknnDetectionPipe() {
3535
this.detector =
3636
new RknnObjectDetector(
3737
NeuralNetworkModelManager.getInstance().getDefaultRknnModel().getAbsolutePath(),
38-
NeuralNetworkModelManager.getInstance().getLabels());
38+
NeuralNetworkModelManager.getInstance().getLabels(),
39+
NeuralNetworkModelManager.getInstance().getModelVersion());
3940
}
4041

4142
@Override
File renamed without changes.

0 commit comments

Comments
 (0)